Wiązanie danych w kliencie WPF (Windows Presentation Foundation)
W przykładzie WPFDataBinding pokazano użycie powiązania danych w kliencie programu Windows Presentation Foundation (WPF). W przykładzie użyto usługi Windows Communication Foundation (WCF), która losowo generuje tablicę albumów, aby powrócić do klienta. Każdy album ma nazwę, cenę i listę utworów albumu. Utwory albumu mają nazwę i czas trwania. Informacje zwracane przez usługę są automatycznie powiązane z interfejsem użytkownika udostępnianym przez klienta programu Windows Presentation Foundation (WPF).
Uwaga
Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.
Powiązanie danych umożliwia automatyczne powiązanie źródła danych z interfejsem użytkownika. Upraszcza to model programowania, ponieważ nie wymaga programowego aktualizowania każdego elementu interfejsu użytkownika przy użyciu danych z obiektu danych lub tablicy obiektów danych. Obiekt można powiązać z pojedynczym elementem interfejsu użytkownika lub tablicą z kontrolką, która przyjmuje wiele danych wejściowych, takich jak ListBox
. Poniższy kod pokazuje, jak powiązać dane z DataContext
elementem interfejsu użytkownika.
// 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;
}
W poprzednim przykładzie DataContext
element układu grid
o nazwie myPanel
jest ustawiony na dane zwrócone przez metodę GetAlbumList
. Element DataContext
umożliwia dziedziczenie informacji z elementów nadrzędnych dotyczących źródła danych używanego do powiązania, a także innych cech powiązania, takich jak ścieżka. Wiersz kodu musi być wykonywany za każdym razem, gdy dane na serwerze są aktualizowane. Na przykład jest wykonywany po zainicjowaniu okna i dodaniu nowego albumu.
W poniższym przykładowym kodzie ListBox
XAML określa ItemsSource="{Binding }"
wartość .
<ListBox
ItemTemplate="{StaticResource AlbumStyle}"
ItemsSource="{Binding }"
IsSynchronizedWithCurrentItem="true" />
Określa to, że dane powiązane z elementem interfejsu użytkownika najwyższego poziomu są również powiązane z tą kontrolką (czyli tablicą albumów). Ponadto określa szablon danych, ItemTemplate="{StaticResource AlbumStyle}"
który ma być używany dla każdego elementu w elemencie ListBox
. Można również zdefiniować szablony danych, aby określić sposób formatowania danych. Te szablony danych można używać ponownie w przypadku innych elementów interfejsu użytkownika w aplikacji. Zaletą jest to, że szablon danych jest zdefiniowany i utrzymywany w jednym miejscu.
Szablon AlbumStyle
danych przedstawia siatkę z dwoma TextBlock
obok siebie. Jeden określa nazwę albumu i drugą liczbę utworów w albumie.
<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>
Poniższy kod XAML tworzy drugi ListBox
kod .
<ListBox Grid.Row="2"
Grid.ColumnSpan="2"
ItemTemplate="{StaticResource TrackStyle}"
ItemsSource="{Binding Path=Tracks}" />
Kod określa ścieżkę dla elementu ItemsSource
. Oznacza to, że dane powiązane z tą kontrolką nie są danymi najwyższego poziomu, ale właściwością danych najwyższego poziomu o nazwie Tracks
. Ta właściwość reprezentuje tablicę utworów zawartych w albumie. Ponadto określono inną DataTemplate
nazwę TrackStyle
. Układ szablonu TrackStyle
jest podobny do tego szablonu AlbumStyle
, ale TextBlock
s są powiązane z różnymi właściwościami. Dzieje się tak, ponieważ dwa szablony są używane z różnymi obiektami danych.
Aby skonfigurować, skompilować i uruchomić przykład
Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.
Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).
Aby uruchomić przykład w konfiguracji pojedynczej lub między maszynami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.