Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Именование элементов



Есть еще одна деталь, которую следует принимать во внимание. В классе отделенного кода вам часто захочется программно манипулировать элементами управления. Например, вы можете читать либо изменять свойства, прикреплять или откреплять обработчики событий на лету. Чтобы обеспечить такую возможность, элемент управления должен включать XAML -атрибут Name. В предыдущем примере элемент Grid не включает атрибут Name, поэтому вы не сможете манипулировать им в отделенном коде.

Вот как можно присвоить имя элементу Grid:

<Grid x:Name = "grid1">

</Grid>

Вы можете провести это изменение в документе XAML вручную, или же выбрать элемент в дизайнере Visual Studio и установить свойство Name в окне Properties (Свойства). В обоих случаях атрибут Name сообщит анализатору XAML -текста о необходимости добавить поле следующего вида к автоматически сгенерированной части класса Windowl:

private System.Windows.Controls.Grid grid1;

Теперь вы можете взаимодействовать со своим элементом в коде вашего класса Window1, используя имя grid1:

MessageBox.Show(String.Format("The grid is {0}x{l} units in size.",

grid1.ActualWidth, grid1.ActualHeight));

Такая техника мало, что дает простому примеру, но становится намного важнее, когда вам нужно читать значения из вводных элементов управления, таких как текстовые поля и списки.

Свойство Name, показанное ранее, является частью языка XAML и используется для того, чтобы помочь в интеграции вашего класса отделенного кода. Некоторая путаница происходит из-за того, что многие классы определяют свое собственное свойство Name. (Примером может служить базовый класс FrameworkElement, от которого наследуются все элементы WPF.) Анализаторы XAML элегантно справляются с этой проблемой. Вы можете либо установить XAML -свойство Name (используя префикс х:), либо свойство Name, относящееся к действительному элементу (пропустив префикс). В любом случае результат один и тот же — специфицированное вами имя используется в файле автоматически сгенерированного кода и применяется для установки свойства Name.

Это значит, что следующая разметка эквивалентна тому, что вы уже видели:

<Grid Name="grid1">

</Grid>

Этот трюк работает только в том случае, если включающий свойство Name класс оснащен атрибутом RuntimeNameProperty. Этот атрибут указывает на то, какое свойство должно трактоваться как имя экземпляра этого типа. (Очевидно, обычно таким свойством является Name.) Класс FrameworkElement включает атрибут RuntimeNameProperty, так что никаких проблем нет.

Совет. В традиционном приложении Windows Forms каждый элемент управления имеет имя. В приложении WPF такого требования нет. Однако если вы создаете окно перетаскиванием элементов на поверхность дизайна Visual Studio, то каждому элементу присваивается автоматически сгенерированное имя. Таково соглашение. Если вы не собираетесь взаимодействовать с элементом в вашем коде, то можете удалить атрибут Name из кода разметки. В примерах, предлагаемых в настоящей книге, имена элементов обычно пропускаются, если они не нужны, что сокращает код разметки.

Теперь у вас должно появиться базовое понимание того, как интерпретировать документ XAML, определяющий окно, и как документ XAML преобразуется в конечный компилированный класс (с добавлением любого написанного вами кода). В следующем разделе мы рассмотрим синтаксис свойств более подробно, и узнаем, как привязывать к элементам обработчики событий.





Дата публикования: 2015-10-09; Прочитано: 358 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...