Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Пример 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.