Читаем Разработка пользовательского интерфейса на основе технологии Windows Presentation Foundation полностью

Здесь и в дальнейшем мы часто будем опускать фрагменты xaml-файла, оставшиеся неизменными, указывая вместо них символ многоточия «…». Измененную часть xaml-файла мы выделили полужирным шрифтом.

Примерный вид окна дизайнера приведен на рис. 2.


screen_image_19_104_162

Рис. 2. Окно дизайнера после добавления компонента Canvas


Разумеется, нам не требуется такое размещение компонента Canvas. Необходимо, чтобы он занимал всю клиентскую область окна. Для того чтобы добиться этого, достаточно просто удалить в xaml-файле все атрибуты элемента Canvas (удаляемые фрагменты будем изображать перечеркнутыми):


screen_image_19_253_76


Новый вид окна дизайнера приведен на рис. 3.


Рис. 3. Окно дизайнера после удаления атрибутов компонента Canvas


Как правило, после добавления в окно какого-либо компонента путем его перетаскивания из панели Toolbox, всегда требуется выполнить действия, связанные с удалением «лишних» атрибутов.

Теперь добавим на компонент Canvas кнопку Button, зацепив ее мышью на панели Toolbox и перетащив в окно. После появления кнопки в окне следует перетащить ее в левый верхний угол окна (при подобном перетаскивании кнопка будет автоматически «притянута» к области, расположенной на расстоянии 10 единиц от левой и верхней границы клиентской области окна, – рис. 4).


screen_image_20_55_144

Рис. 4. Окно дизайнера после добавления компонента Button


Содержимое xaml-файла изменится следующим образом:


screen_image_20_165_60


Мы видим, что теперь элемент Canvas тоже оформляется в виде парных тегов, так как он содержит дочерний элемент – кнопку.

Обсудим атрибуты, автоматически добавленные к элементу Button. Атрибут с именем x:Name определяет имя, с помощью которого можно обращаться к данному компоненту в cs-файле. Это имя будет являться одним из свойств класса MainWindow. Обратите внимание на то, что элемент Canvas аналогичного имени не содержит. Это означает, что в классе MainWindow мы не сможем обращаться по имени к компоненту Canvas. Если это является неудобным, то всегда можно определить имя (или с помощью окна свойств, в котором свойство Name указывается первым, или непосредственно в xaml-файле).

Свойство Content определяет содержимое кнопки. В качестве значения свойства Content может указываться не только строка, но и любой компонент. Более того, на кнопку можно поместить группирующий компонент, в котором, в свою очередь, можно разместить любое количество других компонентов. Это позволяет создавать в WPF-приложении сложные интерфейсные элементы, конструируя их из базовых. Например, можно создать кнопку, содержащую не только текст, но и изображение (в дальнейшем мы воспользуемся этой возможностью – см., например, проект ZOO, п. 7.7).

Следует также обратить внимание на то, что для кнопки не указано свойство Height (хотя свойство Width имеется). Если свойство Height отсутствует, то высота компонента определяется по размерам его содержимого, что в большинстве случаев является оптимальным. Можно было бы удалить и свойство Width, тогда все размеры кнопки будут подстроены под ее содержимое, однако обычно свойство Width указывается, поскольку желательно, чтобы все кнопки в приложении имели одинаковую ширину.

В отличие от компонентов из библиотеки Windows Forms, компоненты библиотеки WPF не имеют свойств Top и Left, определяющих позицию, в которой они размещаются. Это связано с тем, что явное указание позиции компонентов в окне WPF обычно не требуется (положение компонентов определяется другими их свойствами, а также свойствами содержащих их группирующих компонентов). Однако для любого компонента можно задать свойства Top и Left, «полученные» от класса Canvas. Если данный компонент будет размещен на одном из компонентов типа Canvas, то эти полученные свойства будут учтены при определении его позиции. Возможность подобной «передачи» свойств от одного компонента к другому является одним из аспектов особого механизма, реализованного в WPF и связанного с так называемыми свойствами зависимости (dependency properties). Почти все свойства компонентов WPF являются свойствами зависимости, что позволяет их использовать при реализации различных возможностей, доступных в WPF, например, для привязки свойств или определения стилей. Частным случаем свойств зависимости являются присоединенные свойства (attached properties), которые, будучи определенными в одном классе, могут использоваться в другом. Свойства Top и Left компонента Canvas – типичный пример присоединенных свойств.

Присоединенные свойства панели Canvas особенно просто указывать в xaml-файле. Однако к ним можно обращаться и в программном коде, что будет продемонстрировано далее.

Итак, в результате добавления новых компонентов в окно наш xaml-файл изменился следующим образом:


screen_image_21_330_77


Того же результата можно было достичь, просто введя данный текст в xaml-файл, хотя на практике оказывается более удобным добавлять новый компонент с помощью панели Toolbox, а уже затем редактировать связанный с ним текст, добавленный в xaml-файл.

Перейти на страницу:

Похожие книги

Теория государства и права
Теория государства и права

Учебник, написанный в соответствии с курсом «Теория государства и права» для юридических РІСѓР·ов, качественно отличается РѕС' выходивших ранее книг по этой дисциплине. Сохраняя все то ценное, что наработано в теоретико-правовой мысли за предыдущие РіРѕРґС‹, автор вместе с тем решительно отходит РѕС' вульгаризированных догм и методов, существенно обновляет и переосмысливает РІРѕРїСЂРѕСЃС‹ возникновения, развития и функционирования государства и права.Книга, посвященная современной теории государства и права, содержит СЂСЏРґ принципиально новых тем. Впервые на высоком теоретическом СѓСЂРѕРІРЅРµ осмыслены и изложены РІРѕРїСЂРѕСЃС‹ новых государственно-правовых процессов современного СЂРѕСЃСЃРёР№ского общества. Дается характеристика гражданского общества в его соотношении с правом и государством.Для студентов, аспирантов, преподавателей и научных работников юридических РІСѓР·ов.Р

Алла Робертовна Швандерова , Анатолий Борисович Венгеров , Валерий Кулиевич Цечоев , Михаил Борисович Смоленский , Сергей Сергеевич Алексеев

Детская образовательная литература / Государство и право / Юриспруденция / Учебники и пособия / Прочая научная литература / Образование и наука
История Беларуси. С древнейших времен до 2013 г.
История Беларуси. С древнейших времен до 2013 г.

Представлена история Беларуси с древнейших времен до наших дней. Освещаются проблемы этногенеза (происхождения) белорусов, формирования белорусской народности и нации, становления белорусской государственности, социально-экономического, политического и культурного развития белорусских земель в составе Древнерусского государства, Великого Княжества Литовского, Речи Посполитой, Российской империи. Особое внимание уделяется истории советского периода, советской модели модернизации общества, проблемам развития суверенной Республики Беларусь.Первое издание вышло в 2010 г.Для студентов и преподавателей высших учебных заведений, а также учащихся средних специальных и профессионально-технических учебных заведений, лицеев, гимназий, всех, кто интересуется историей Отечества.

Евгений Константинови Новик , Игорь Леонидович Качалов , Наталия Евгеньевна Новик

Детская образовательная литература / История / Учебники и пособия ВУЗов / Книги Для Детей / Образование и наука