Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пример WPFDataBinding демонстрирует использование привязки данных в клиенте Windows Presentation Foundation (WPF). В примере используется служба Windows Communication Foundation (WCF), которая случайно создает массив альбомов для возврата клиенту. Каждый альбом имеет имя, цену и список альбомных треков. Треки альбома имеют имя и длительность. Сведения, возвращаемые службой, автоматически привязаны к пользовательскому интерфейсу, предоставленному клиентом Windows Presentation Foundation (WPF).
Замечание
Процедура установки и инструкции по сборке для этого примера находятся в конце этого раздела.
Привязка данных позволяет источнику данных автоматически привязываться к пользовательскому интерфейсу. Это упрощает модель программирования, так как не требует программного обновления каждого элемента пользовательского интерфейса с данными из объекта данных или массива объектов данных. Объект можно привязать к одному элементу пользовательского интерфейса или массив к элементу управления, который принимает несколько входных данных, например, ListBox. В следующем коде показано, как привязать данные к DataContext элементу пользовательского интерфейса.
// Event handler executed when call is complete
void client_GetAlbumListCompleted(object sender, GetAlbumListCompletedEventArgs e)
{
// This is on the UI thread, myPanel can be accessed directly
myPanel.DataContext = e.Result;
}
В предыдущем примере для элемента макета с именем DataContext значение gridmyPanel устанавливается на данные, возвращаемые методом GetAlbumList. Элементы DataContext могут наследовать сведения от родительских элементов о источнике данных, используемом для привязки, а также других характеристик привязки, таких как путь. Строка кода должна выполняться каждый раз при обновлении данных на сервере. Например, он выполняется при инициализации окна и при добавлении нового альбома.
В следующем примере кода ListBox XAML указывается ItemsSource="{Binding }".
<ListBox
ItemTemplate="{StaticResource AlbumStyle}"
ItemsSource="{Binding }"
IsSynchronizedWithCurrentItem="true" />
Это указывает, что данные, привязанные к элементу пользовательского интерфейса верхнего уровня, также привязаны к этому элементу управления (т. е. массиву альбомов). Кроме того, ItemTemplate="{StaticResource AlbumStyle}" указывает шаблон данных, используемый для каждого элемента в элементе ListBox. Вы также можете определить шаблоны данных, чтобы указать способ форматирования данных. Эти шаблоны данных можно повторно использовать для других элементов пользовательского интерфейса в приложении, преимущество заключается в том, что шаблон данных определен и поддерживается в одном месте.
Шаблон AlbumStyle данных размещает сетку с двумя TextBlock рядом. Один указывает имя альбома и другое число треков в альбоме.
<DataTemplate x:Key="AlbumStyle">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="260" />
<ColumnDefinition Width="60" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" TextContent="{Binding Path=Title}" />
<TextBlock Grid.Column="1" TextContent="{Binding Path=Tracks#.Count}" HorizontalAlignment="Right" />
</Grid>
</DataTemplate>
Следующий код XAML создает второй ListBox.
<ListBox Grid.Row="2"
Grid.ColumnSpan="2"
ItemTemplate="{StaticResource TrackStyle}"
ItemsSource="{Binding Path=Tracks}" />
Код задает путь для ItemsSource. Это означает, что данные, привязанные к этому элементу управления, не являются данными верхнего уровня, а свойством данных верхнего уровня с именем Tracks. Это свойство обозначает массив треков, содержащихся в альбоме. Кроме того, указывается другой DataTemplate, который называется TrackStyle. Макет шаблона TrackStyle аналогичен макету шаблона AlbumStyle, но TextBlock привязаны к разным свойствам. Это связано с тем, что два шаблона используются с разными объектами данных.
Настройка, сборка и запуск примера
Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.
Чтобы создать версию решения на C# или Visual Basic .NET, следуйте инструкциям по сборке примеров Windows Communication Foundation .
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в запуска примеров Windows Communication Foundation.