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

Майринк Г. "Белый доминиканец " (Художественная литература)

Хусаинов А. "Голоса вещей. Альманах том 2" (Художественная литература)

Петров Г.И. "Отлучение Льва Толстого " (Художественная литература)

Хусаинов А. "Голоса вещей. Альманах том 1 " (Художественная литература)
Реклама

Windows presentation foundation with - MacDonald M.

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

Book_Pro_WPF-2.mdb 55 19.05.2008 18:09:39
56 Глава 2
На заметку! ХАМ1_, как и все языки на базе ХМ1_, является чувствительным к регистру. Это значит, что вы не можете подставить Ог^^пь вместо кН^^пх Однако конвертеры типов обычно не являются чувствительными к регистру, а потому и Foreground="white", и Foregrouпd="white" даст одинаковый результат.
Сложные свойства
Как бы ни были удобны конвертеры типов, они подходят не для всех сценариев. Например, некоторые свойства являются полноценными объектами со своими собственными наборами свойств. Хотя можно создать строковое представление, которое будет использовать конвертер типа, этот синтаксис может быть труден в применении и подвержен ошибкам.
К счастью, XAML предусматривает другой выбор: синтаксис “свойство-элемент”. С помощью этого синтаксиса вы можете добавлять дочерний элемент с именем в форме Родитель.ИмяСвойства. Например, у Grid есть свойство Background, которое позволяет применять кисть, используемую для рисования области, находящейся под элементами управления. Если вы хотите использовать сложную кисть — более совершенную, чем сплошное заполнение цветом — то вам нужно добавить дочерний дескриптор по имени Grid.Background, как показано ниже:
<Grid Name="gridl">
<Grid.Background>
</Grid.Background>
</Grid>
Ключевая деталь, которая заставляет это работать — это точка (. ) в имени элемента. Это отличает свойства от других типов и сложенного содержимого.
Но остается еще один вопрос, а именно: как только вы идентифицировали сложное свойство, которое хотите конфигурировать, как вы установите его? Трюк заключается в следующем. Внутри вложенного элемента вы можете добавить другой дескриптор, чтобы создать экземпляр определенного класса. В примере с автоответчиком (показанном на рис. 2.1), фон заливается градиентом. Чтобы определить нужный вам градиент, следует создать объект LinearGradientBrush.
В соответствие с правилами XAML, вы можете создать объект LinearGradientBrush, используя элемент по имени LinearGradientBrush:
<Grid Name="gridl">
<Grid.Background>
<LinearGradientBrush>
</ LinearGradientBrush>
</Grid.Background>
</Grid>
LinearGradientBrush является частью набора пространств имен WPF, так что вы можете использовать пространство имен XML по умолчанию для ваших дескрипторов.
Однако недостаточно просто создать LinearGradientBrush; вам также нужно специфицировать цвета градиента. Это делается заполнением свойства LinearGradientBrush.GradientStops коллекцией объектов GradientStop. Опять-таки, свойство GradientStops слишком сложно, чтобы быть установленным только одним значением атрибута. Вместо этого вам нужно положиться на синтаксис “свойство-элемент”.
Book Pro WPF-2.indb 56
18:09:39
XAML 57
<Grid Name="grid1">
<Grid.Background>
<LinearGradientBrush>
<LinearGradientBrush.GradientStops>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Grid.Background>
</Grid>
И, наконец, вы можете заполнить коллекцию GradientStops серией объектов GradientStop. Каждый объект GradientStop имеет свойства Offset и Color. Вы можете применять эти два значения, используя обычный синтаксис “свойство-элемент”:
<Grid Name="grid1">
<Grid.Background>
<LinearGradientBrush>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.00" Color="Red" />
<GradientStop Offset="0.50" Color="Indigo" />
<GradientStop Offset="1.00" Color="Violet" /> </LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Grid.Background>
</Grid>
На заметку! Вы можете использовать синтаксис “свойство-элемент” для любого свойства. Но обычно вы будете использовать более простой подход “свойство-атрибут”, если свойство имеет подходящий конвертер типа. Это дает более компактный код.
Любой набор дескрипторов XAML может быть заменен набором операторов кода, решающих ту же задачу. Показанные ранее дескрипторы, которые заполняют фон градиентом по вашему выбору, эквивалентны следующему коду:
LinearGradientBrush brush = new LinearGradientBrush();
GradientStop gradientStopl = new GradientStop(); gradientStopl.Offset = 0; gradientStopl.Color = Colors.Red; brush.GradientStops.Add(gradientStopl);
GradientStop gradientStop2 = new GradientStop(); gradientStop2.Offset = 0.5; gradientStop2.Color = Colors.Indigo; brush.GradientStops.Add(gradientStop2);
GradientStop gradientStop3 = new GradientStop(); gradientStop3.Offset = l; gradientStop3.Color = Colors.Violet; brush.GradientStops.Add(gradientStop3); gridl.Background = brush;
Расширения разметки
Для большинства свойств синтаксис свойств XAML работает исключительно хорошо. Но в некоторых случаях просто невозможно жестко закодировать значение свойства. Например, вы можете установить значение свойства в уже существующий объект. Или же решите устанавливать значение свойства динамически, привязывая его к свойству в другом элементе управления. В обоих таких случаях вам нужно использовать расшире-
Book_Pro_WPF-2.mdb 57 19.05.2008 18:09:40
58 Глава 2
ние разметки (markup extension) — специализированный синтаксис, устанавливающий свойство нестандартным образом.
Предыдущая << 1 .. 21 22 23 24 25 26 < 27 > 28 29 30 31 32 33 .. 473 >> Следующая