Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Windows presentation foundation with - MacDonald M.

MacDonald M. Windows presentation foundation with — Вильямс , 2008. — 928 c.
ISBN 978-5-8459-1429-3
Скачать (прямая ссылка): wpfwindowspresente2008.pdf
Предыдущая << 1 .. 24 25 26 27 28 29 < 30 > 31 32 33 34 35 36 .. 473 >> Следующая

[ContentPropertyAttribute("Children")]
public abstract class Panel
Это указывает на то, что любые вложенные элементы должны быть использованы для установки свойства Children. Анализатор XAML трактует свойство содержимого по-разному в зависимости от того, является ли оно свойством-коллекцией (и в этом случае реализует интерфейс IList или IDictionary). Поскольку свойство Panel.Children возвращает UIElementCollection, и поскольку UIElementCollection реализует IList, анализатор использует метод IList.Add() для добавления вложенного содержимого в сетку.
Другими словами, когда анализатор XAML встречает приведенную выше разметку, он создает экземпляр каждого элемента и передает его Grid, используя метод Grid.Children.Add() :
txtQuestion = new TextBox();
grid1.Children.Add(txtQuestion);
cmdAnswer = new Button();
Book_Pro_WPF-2.mdb 61 19.05.2008 18:09:40
62 Глава 2
gridl.Children.Add(cmdAnswer);
txtAnswer = new TextBox();
gridl.Children.Add(txtAnswer);
Что происходит дальше, полностью зависит от того, как элемент управления реализует свойство содержимого. Grid отображает все включенные в него элементы управления в невидимой компоновке строк и колонок, как будет показано в главе 4.
Атрибут ContentProperty часто используется в WPF. Он применяется не только для контейнерных элементов управления (вроде Grid) и элементов, содержащих коллекцию визуальных элементов (таких как ListBox и TreeView), но также используется для элементов управления, содержащих одиночное содержимое. Например, TextBox и Button способны содержать только один элемент или фрагмент текста, но они оба используют свойство содержимого, чтобы обращаться с вложенным содержимым, как показано ниже:
<TextBox Name="txtQuestion" ... >
[Place question here.]
</TextBox>
<Button Name="cmdAnswer" ... >
Ask the Eight Ball
</Button>
<TextBox Name="txtAnswer" ... >
[Answer will appear here.]
</TextBox>
Класс TextBox использует атрибут ContentProperty для пометки свойства TextBox.Text. Класс Button использует атрибут ContentProperty для пометки свойства Button.Content. Анализатор XAML использует примененный текст для установки этих свойств.
Свойство TextBox.Text принимает только строковые значения. Однако Button. Content более интересно. Как вы узнаете из главы 5, свойство Content принимает любой элемент. Например, так выглядит кнопка, содержащая объект-фигуру:
<Button Name="cmdAnswer" ... >
<Rectangle Fill="Blue" Height="l0" Width="l00" />
</Button>
Поскольку свойства Text и Content не используют коллекций, вы не можете включить более одной части содержимого. Например, если вы попытаетесь вложить несколько элементов внутрь Button, то анализатор XAML сгенерирует исключение. Анализатор также сгенерирует исключение, если вы примените нетекстовое содержимое (такое как
Rectangle).
На заметку! Как правило, все элементы управления, унаследованные от ContentControl, допускают единственный вложенный элемент. Все элементы, унаследованные от ItemsControl, допускают коллекцию элементов, отображаемых на элемент управления некоторого типа (такой как окно списка или дерево). Все элементы, унаследованные от Panel, являются контейнерами, используемыми для организации групп элементов управления. Базовые классы ContentControl, ItemsControl и Panel — все используют атрибут ContentProperty.
Специальные символы и пробелы
ХАМЬ ограничен правилами ХМЬ. Например, ХМЬ уделяет особое внимание нескольким специальным символам наподобие &, < и >. Если вы попытаетесь применить эти значения для установки содержимого элемента, то столкнетесь с проблемой, поскольку
Book_Pro_WPF-2.mdb 62 19.05.2008 18:09:40
XAML 63
анализатор XAML предположит, что вы пытаетесь сделать что-то другое — например, создать вложенный элемент.
Предположим, что вы хотите создать кнопку, которая содержит текст <Click Me>. Следующий код разметки работать не будет:
<Button ... >
<Click Me>
</Button>
Проблема в том, что это выглядит так, как будто вы пытаетесь создать элемент по имени Click с атрибутом Me. Решение состоит в замене сомнительных символов сущностными ссылками — специфическими кодами, которые анализатор XAML интерпретирует правильно. В табл. 2.1 перечислены символьные сущности, которые вы можете использовать. Обратите внимание, что символьная сущность типа кавычки требуется только при установке значений с использованием атрибута, так как кавычка обозначает начало и конец значения атрибута.
Таблица 2.1. Символьные сущности XML
Специальный символ Символьная сущность
Меньше (<) &lt;
Больше (>) &gt;
Амперсанд (&) &amp;
Кавычка (") &quot;
Ниже приведен правильный код разметки, использующий соответствующие символьные сущности:
<БиББоп ... >
&lt,•Click Me&gt,•
</БиББоп>
Когда анализатор ХЛМЬ читает это, он правильно понимает, что вы хотите добавить текст <Сііск Ме>, и передает строку с этим содержимым, дополняя ее угловыми скобками, свойству БиЬЬоп.СопЬепЬ.
На заметку! Это ограничение — деталь ХАМ1_, которая не коснется вас, если вы захотите установить свойство БиЬЬоп.СопЬепЬ в коде. Конечно, С# имеет свой собственный специальный символ (обратный слэш), который нужно защищать в строковых литералах по той же причине.
Предыдущая << 1 .. 24 25 26 27 28 29 < 30 > 31 32 33 34 35 36 .. 473 >> Следующая