Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Янин В.Л. "Новгородские акты 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 .. 20 21 22 23 24 25 < 26 > 27 28 29 30 31 32 .. 473 >> Следующая

До сих пор мы рассматривали не слишком впечатляющий пример — пустое окно, содержащее пустой элемент управления Grid. Прежде чем двигаться дальше, стоит представить более реалистичное окно, включающее несколько элементов управления.
Book_Pro_WPF-2.mdb 53 19.05.2008 18:09:39
54 Глава 2
На рис. 2.1 показан пример с автоответчиком на вопросы пользователя.
Рис. 2.1. Спросите автоответчик и все узнаете
Окно автоответчика включает четыре элемента управления: Grid (чаще всего используемый для организации компоновки в WPF), два объекта TextBox и один Button. Разметка, которая необходима для компоновки и конфигурирования этих элементов управления, существенно длиннее, чем в предыдущих примерах. Ниже приведен сокращенный листинг, в котором некоторые детали заменены многоточиями, чтобы продемонстрировать общую структуру.
<Window x:Class="EightBall.Windowl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Eight Ball Answer" Height="328" Width="4l2">
<Grid Name="gridl">
<Grid.Background>
</Grid.Background>
<Grid.RowDefinitions>
</Grid.RowDefinitions>
<TextBox Name="txtQuestion" ... >
</TextBox>
<Button Name="cmdAnswer" ... >
</Button>
<TextBox Name="txtAnswer" ... >
</TextBox>
</Grid>
</Window>
В следующем разделе мы рассмотрим части этого документа и по пути изучим синтаксис XAML.
На заметку! XAML не ограничен классами, входящими в WPF. Вы можете использовать XAML для создания экземпляра любого класса, который подчиняется нескольким основным правилам. О том, как вы можете использовать ваши собственные классы с XAML, вы узнаете далее в этой главе.
Book_Pro_WPF-2.mdb 54 19.05.2008 18:09:39
XAML 55
Простые свойства и конвертеры типов
Как вы уже видели, атрибуты элемента устанавливают свойства соответствующего объекта. Например, текстовые поля в примере автоответчика конфигурируют выравнивание, поля и шрифт:
<TextBox Name="txtQuestion"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
FontFamily="Verdana" FontSize="24" Foreground="Green" ... >
Чтобы это заработало, класс System.Windows.Controls.TextBox должен предоставить следующие свойства: VerticalAlignment, HorizontalAlignment, FontFamily, FontSize и Foreground. В последующих главах вы ознакомитесь со специфическим значением этих свойств.
Чтобы заставить эту систему работать, анализатор XAML должен выполнить больше работы, чем вам может показаться сначала. Значение в атрибуте XAML всегда представлено простой строкой. Однако свойства объекта могут быть любого типа .NET. В предыдущем примере было два свойства, использующих перечисления (VerticalAlignment и HorizontalAlignment), одна строка (FontFamily), одно целое число (FontSize) и один объект Brush (Foreground).
Чтобы преодолеть зазор между строковыми значениями и не строковыми свойствами, анализатору XAML необходимо выполнить преобразование. Это преобразование осуществляется конвертерами типов — базовой частью инфраструктуры .NET, которая существует еще со времен .NET 1.0.
По сути, конвертер типов играет в своей жизни только одну роль — он предоставляет служебные методы, которые могут преобразовывать определенный тип данных .NET в любой другой тип .NET, такой как строку в данном случае. Анализатор XAML выполняет следующие два шага, чтобы найти нужный конвертер типа.
1. Проверяет объявление свойства в поисках атрибута TypeConverter. (В настоящее время атрибут TypeConverter указывает класс, выполняющий преобразование.) Например, когда вы используете такое свойство, как Foreground, то .NET проверяет объявление свойства Foreground.
2. Если в объявлении свойства отсутствует атрибут TypeConverter, то анализатор XAML проверяет объявление класса соответствующего типа данных. Например, свойство Foreground использует объект Brush. Класс Brush (и его наследники) используют BrushConverter, потому что класс Brush оснащен объявлением атрибута TypeConverter(typeof(BrushConverter)) .
Если в объявлении свойства или объявлении класса не оказывается ассоциированного конвертера типа, то анализатор XAML генерирует ошибку.
Эта система проста и гибка. Если вы устанавливаете конвертер типа на уровне класса, то этот конвертер применяется к каждому свойству, использующему этот класс. С другой стороны, если вы хотите обеспечить тонкую настройку работы конвертера типа для конкретного свойства, то вместо этого можете применять атрибут TypeConverter объявления свойства.
Технически возможно использовать конвертеры типов в коде, но синтаксис при этом несколько мудреный. Почти всегда лучше непосредственно установить свойство — это не только быстрее, но также позволяет избежать потенциальных ошибок от опечаток в строках, которые не проявляются до момента выполнения. (Эта проблема не затрагивает XAML, поскольку XAML анализируется и проверяется во время компиляции.) Конечно, прежде чем вы сможете установить свойства в элементе WPF, вам нужно узнать немного больше о базовых свойствах WPF и типах данных. Именно этому и будут посвящены несколько последующих глав.
Предыдущая << 1 .. 20 21 22 23 24 25 < 26 > 27 28 29 30 31 32 .. 473 >> Следующая