Программирование >>  Расширенный wf 

1 [ 2 ] 3 4 5 ... 15


С целевым объектом вы можете вызывать метод SetBinding() для определения привязки. Здесь целью служит объект Canvas по имени FunnyFace. Метод SetBinding() требует двух параметров: первый - это свойство зависимости, а второй - объект привязки. Свойство Canvas.Left должно быть привязано, поэтому свойство привязки типа DependencyProperty может быть доступно через поле Canvas.LeftProperty.

Binding binding = new Binding(); binding.Path = new PropertyPath( Value ); binding.Source = slider;

FunnyFace.SetBinding(Canvas.LeftProperty, binding);

Для класса Binding вы можете конфигурировать множество опций привязки, которые описаны в табл. 35.2.

Таблица 35.2. Свойства класса Binding

Свойство

Source

RelativeSource ElementName

Path

Xpath Mode

Converter

FallbackValue

ValidationRules

Описание

Свойством Source вы определяете объект-источник для привязки данных.

Свойством RelativeSource вы можете специфицировать источник по отношению к объекту-цели. Это удобно для отображения сообщений об ошибках, когда источник ошибки поступает из того же элемента управления.

Если источник - элемент WPF, вы можете специфицировать источник свойством ElementName.

С помощью свойства Path вы можете специфицировать путь к объекту-источнику. Это может быть свойство объекта-источника, но индексаторы и свойства дочерних элементов также поддерживаются.

С источником данных XML вы можете определить выражение запроса XPath, чтобы получать данные для привязки.

Mode задает направление для привязки. Свойство Mode имеет тип BindingMode - перечисление, состоящее из следующих значений: Default, OneTime, OneWay, TwoWay, OneWayToSource. Значение по умолчанию зависит от цели: для TextBox двунаправленная привязка принята по умолчанию; для элемента Label, который доступен только для чтения, стандартной является однонаправленная привязка. OneTime означает, что данные загружаются из источника только при инициализации, а OneWay также выполняет обновления из источника в цели. Привязка TwoWay обеспечивает запись изменений WPF-элемента обратно в источник. OneWayToSource означает, что данные никогда не читаются, а только записываются из цели в источник.

С помощью свойства Converter вы можете специфицировать класс конвертера, который преобразует данные из пользовательского интерфейса и обратно. Класс конвертера должен реализовывать интерфейс IValueConverter, который определяет методы Convert() и ConvertBack(). Вы можете передавать параметры методам конвертера со свойством ConverterParameter.

Конвертер может быть зависимым от культуры; культура может быть установлена в свойстве ConverterCulture.

Посредством свойства FallbackValue вы можете определять значение по умолчанию, используемое в случае, когда привязка не возвращает значения.

С помощью свойства ValidationRules вы можете определить коллекцию объектов ValidationRule, проверяемых перед тем, как источник обновится по целевым элементам WPF. Класс ExceptionValidationRule наследуется от класса ValidationRule и проверяется на предмет исключений.



Привязка простого объекта

Для привязки объектов CLR вместе с классами .NET вы должны определять свойства, как показано в следующем примере класса Book и его свойств Title, Publisher, Isbn и Authors.

public class Book

public Book(string title, string publisher, string isbn, params string[] authors)

this.title = title; this.publisher = publisher; this.isbn = isbn;

foreach (string author in authors)

this.authors.Add(author);

public Book()

: this( unknown , unknown , unknown )

public string Title { get; set; } public string Publisher { get; set; } public string Isbn { get; set; } public override string ToString()

return title;

private readonly List<string> authors = new List<string>(); public string[] Authors

get { return authors.ToArray(); }

В пользовательском интерфейсе определены несколько меток и элементов - текстовых полей для отображения информации о книге. Используя расширения разметки Binding, элементы управления TextBox привязываются к свойствам класса Book. В расширении разметки Binding не определяется ничего помимо свойства Path, служащего для привязки свойства класса Book. Определять источник необходимости нет, поскольку источник определяется присвоением DataContext, что видно в приведенном ниже отделенном коде. Режим привязки для элемента TextBox выбирается по умолчанию, т.е. является двунаправленным.

<Window x:Class= ObjectBindingSample.Window1

xmlns= http: schemas.microsoft.com/winfx/2 00 6/xaml/presentation xmlns:x= http: schemas.microsoft.com/winfx/2 006/xaml Title= Object Binding Sample Height= 300 Width= 340

>

<Grid Name= bookGrid Margin= 5 > <Grid.ColumnDefinitions>

<ColumnDefinition Width= 30* />

<ColumnDefinition Width= 70* />

</Grid.ColumnDefinitions> <Grid.RowDefinitions>

<RowDefinition Height= 50 /> <RowDefinition Height= 50 /> <RowDefinition Height= 50 />



<RowDefinition Height= 50 /> <RowDefinition Height= 50 />

</Grid.RowDefinitions>

0 Grid.Row= 0 >Title:</Label>

Height= 30 Grid.Column= 1 Grid.Row= 0

Title} />

0 Grid.Row= 1 >Publisher:</Label> Height= 30 Grid.Column= 1 Grid.Row= 1

Publisher} />

0 Grid.Row= 2 >ISBN:</Label> Height= 30 Grid.Column= 1 Grid.Row= 2

Text= {Binding Isbn} /> <Button Margin= 5 Grid.Column= 1 Grid.Row= 4

Name= bookButton >Open Dialog</Button> </Grid> </Window>

<Label Grid.Column= <TextBox Width= 200 Text= {Binding <Label Grid.Column= <TextBox Width= 200 Text= {Binding <Label Grid.Column= <TextBox Width= 200

Click= bookButton Click

В отделенном коде создается новый объект Book, и книга присваивается свойству DataContext элемента управления Grid. Свойство DataContext - свойство зависимости, определенное в базовом классе FrameworkElement. Присваивание DataContext с элементом Grid означает, что каждый элемент Grid имеет привязку по умолчанию к одному и тому же контексту данных.

public partial class Window1 : System.Windows.Window

private Book book1 = new Book(); public Window1()

InitializeComponent();

bookl.Title = Professional C# 2005 with .NET 3.0 ; bookl.Publisher = Wrox Press ; bookl.Isbn = 978-0470124727 ;

bookGrid.DataContext = book1;

После запуска приложения вы можете увидеть привязанные данные, как показано на рис. 35.4.

Для демонстрации двунаправленной привязки (изменения при вводе в элемент WPF отражаются внутри объекта CLR) реализован метод OnOpenBookDialog() . Этот метод назначен событию Click кнопки bookButton, что можно видеть в коде XAML. При щелчке на кнопке всплывает окно сообщения, отображающее текущий заголовок и номер ISBN объекта bookl. На рис. 35.5 показан вывод окна сообщения после внесения изменений во время выполнения.



Рис. 35.4. Привязка простого объекта

Рис. 35.5. Вывод окна сообщения



1 [ 2 ] 3 4 5 ... 15

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика