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

}
}
}
Когда вы компилируете ваше приложение, XAML, определяющий ваш пользовательский интерфейс (такой как Windowl.xaml) транслируется в объявление типа CLR, объединенного с логикой вашего файла класса отделенного кода (подобного Windowl.xaml.cs), формируя один общий модуль.
Метод InitializeComponent()
В данный момент класс Windowl не содержит никакой реальной функциональности. Однако он включает одну важную деталь — конструктор по умолчанию, который вызывает InitializeComponent(), когда вы создаете экземпляр класса.
На заметку! іпіьіаііхеСотропепУ() играет ключевую роль в приложениях WPR По этой причине вы никогда не должны удалять вызов іпіьіаііхеСотропепУ() из конструктора вашего окна. Аналогично, если вы добавите другой конструктор, предусмотрите в нем вызов
ІпіЬіаііхеСотропепЬ() .
Метод 1п1У1а11хеСотропепЬ() не видим в вашем исходном коде, потому что генерируется автоматически при компиляции вашего приложения. По существу все, что делает 1п1ь1а11хеСотропепЬ() — это вызов метода LoadComponent() класса System.Windows.App1ication. Метод LoadComponent() извлекает код БЛМЬ (компилированный ХЛМЬ] из вашей сборки и использует его для построения вашего пользовательского интерфейса. При разборе БЛМЬ он создает объекты каждого элемента управления, устанавливает их свойства и прикрепляет все обработчики событий.
На заметку! Если вам не терпится, загляните в конец главы. Там, в разделе “Код и компилированный ХАМ1_” вы найдете код автоматически сгенерированного метода Initia1izeComponent().
Именование элементов
Есть еще одна деталь, которую следует принимать во внимание. В классе отделенного кода вам часто захочется программно манипулировать элементами управления. Например, вы можете читать либо изменять свойства, прикреплять или откреплять обработчики событий на лету. Чтобы обеспечить такую возможность, элемент управления должен включать XAML-атрибут Name. В предыдущем примере элемент Grid не включает атрибут Name, поэтому вы не сможете манипулировать им в отделенном коде.
Вот как можно присвоить имя элементу Grid:
6 <Grid x:Name="grid1">
7 </Grid>
Book_Pro_WPF-2.indb 52 19.05.2008 18:09:39
XAML 53
Вы можете провести это изменение в документе XAML вручную, или же выбрать элемент в дизайнере Visual Studio и установить свойство Name в окне Properties (Свойства).
В обоих случаях атрибут Name сообщит анализатору XAML о необходимости добавить поле следующего вида к автоматически сгенерированной части класса Windowl:
private System.Windows.Controls.Grid gridl;
Теперь вы можете взаимодействовать со своим элементом в коде вашего класса Windowl, используя имя gridl:
MessageBox.Show(String.Format("The grid is {0}x{1} units in size.”, grid1.ActualWidth, grid1.ActualHeight));
Такая техника мало, что дает простому примеру, но становится намного важнее, когда вам нужно читать значения из вводных элементов управления, таких как текстовые поля и списки.
Свойство Name, показанное ранее, является частью языка XAML и используется для того, чтобы помочь в интеграции вашего класса отделенного кода. Некоторая путаница происходит из-за того, что многие классы определяют свое собственное свойство Name. (Примером может служить базовый класс FrameworkElement, от которого наследуются все элементы WPF.) Анализаторы XAML элегантно справляются с этой проблемой. Вы можете либо установить XAML-свойство Name (используя префикс x:), либо свойство Name, относящееся к действительному элементу (пропустив префикс). В любом случае результат один и тот же — специфицированное вами имя используется в файле автоматически сгенерированного кода и применяется для установки свойства Name.
Это значит, что следующая разметка эквивалентна тому, что вы уже видели:
<Grid Name="grid1">
</Grid>
Этот трюк работает только в том случае, если включающий свойство Name класс оснащен атрибутом RuntimeNameProperty. Атрибут RuntimeNameProperty указывает на то, какое свойство должно трактоваться как имя экземпляра этого типа. (Очевидно, обычно таким свойством является Name.) Класс FrameworkElement включает атрибут RuntimeNameProperty, так что никаких проблем нет.
Совет. В традиционном приложении Windows Forms каждый элемент управления имеет имя.
В приложении WPF такого требования нет. Однако если вы создаете окно перетаскиванием элементов на поверхность дизайна Visual Studio, то каждому элементу присваивается автоматически сгенерированное имя. Таково соглашение. Если вы не собираетесь взаимодействовать с элементом в вашем коде, то можете удалить атрибут Name из кода разметки. В примерах, предлагаемых в настоящей книге, имена элементов обычно пропускаются, если они не нужны, что сокращает код разметки.
Теперь у вас должно появиться базовое понимание того, как интерпретировать документ XAML, определяющий окно, и как документ XAML преобразуется в конечный компилированный класс (с добавлением любого написанного вами кода). В следующем разделе мы рассмотрим синтаксис свойств более подробно, и узнаем, как привязывать к элементам обработчики событий.
Свойства и события в XAML
Предыдущая << 1 .. 19 20 21 22 23 24 < 25 > 26 27 28 29 30 31 .. 473 >> Следующая