Главная » WPF » Основные  принципы связывания WPF

0

Связывание – это просто  способ  синхронизации двух  элементов  данных. Элемент  данных  (data  point) – абстрактное  понятие,  выражающее  идею «точ ки» в пространстве  данных. Описать  элемент данных можно разными  способа ми; чаще всего он представляется источником данных и запросом. Например, элемент  данных  «свойство»  состоит  из объекта  и имени  свойства.  Имя  свой ства определяет  само свойство, а объект служит  источником данных для этого свойства.

В WPF элемент  данных  представлен  классом  Binding.  Для  конструирова ния привязки мы указываем  источник (данных) и путь (запрос). В следующем примере создается элемент данных, ссылающийся на свойство Text объекта TextBox:

Binding bind = new Binding();

bind.Source = textBox1;

bind.Path = new PropertyPath(«Text»);

Нужен  еще второй элемент  данных, который  будет синхронизован с первым. Поскольку связывание в WPF ограничивается только деревом элементов, то для определения какого либо  элемента  данных  нужно  вызвать  метод  SetBinding. Этот метод вызывается для источника данных, а данные привязываются к запросу4 (в данном примере к свойству ContentControl.ContentProperty):

contentControl1.SetBinding(ContentControl.Content, bind);

В этом  примере  свойство  Text  объекта  textBox1 связывается со свойством Content объекта contentControl1. То же самое можно было бы выразить на XAML (рис. 6.2):

<Window … Title=’EssentialWPF’>

<StackPanel>

<TextBox x:Name=’textBox1’ />

<ContentControl Margin=’5’ x:Name=’contentControl1’ Content=’{Binding ElementName=textBox1,Path=Text}’ />

</StackPanel>

</Window>

Когда  привязка  объявляется  в  разметке,  для  задания  источника  можно  ис

пользовать  свойство ElementName.

Учитывая все, что мы узнали  об элементах  управления в главе 3, не должен вызывать  удивления тот факт, что механизм  связывания можно применить  для привязки свойства Text (строкового) элемента TextBox  к свойству Content (име ющему тип object). Удивительно же то, что мы можем привязать свойство Text к чему то совершенно  непохожему,  например,  к свойству  FontFamily (строкой  не являющемуся):

<Window … Title=’EssentialWPF’ >

<StackPanel>

<TextBox x:Name=’textBox1’ />

<TextBox x:Name=’textBox2’ />

<ContentControl

Margin=’5’

Content=’{Binding ElementName=textBox1,Path=Text}’ FontFamily=’{Binding ElementName=textBox2,Path=Text}’

/>

</StackPanel>

Рис. 6.6. Связывание с помощью шаблона данных

Элементы  данных  и преобразования – две базовые  конструкции механизма связывания. Познакомившись с основными  ингредиентами данных,  мы можем заняться  деталями  привязки к объектам CLR и к XML, а затем углубиться  в сис тему шаблонов данных.

Источник: К. Андерсон  Основы  Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, 2008 — 432 с.: ил.

По теме:

  • Комментарии