Aracılığıyla paylaş


Windows Presentation Foundation İstemcisinde Veri Bağlama

WPFDataBinding örneği, Bir Windows Presentation Foundation (WPF) istemcisinde veri bağlama kullanımını gösterir. Örnek, istemciye dönmek için rastgele bir dizi albüm oluşturan bir Windows Communication Foundation (WCF) hizmeti kullanır. Her albümün bir adı, fiyatı ve albüm parçaları listesi vardır. Albüm parçalarının bir adı ve süresi vardır. Hizmet tarafından döndürülen bilgiler, Windows Presentation Foundation (WPF) istemcisi tarafından sağlanan kullanıcı arabirimine (UI) otomatik olarak bağlanır.

Uyarı

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

Veri bağlama, bir veri kaynağının kullanıcı arabirimine otomatik olarak bağlanmasına olanak tanır. Bu, programlama modelini basitleştirir çünkü her ui öğesini bir veri nesnesinden veya bir veri nesneleri dizisinden gelen verilerle program aracılığıyla güncelleştirmenizi gerektirmez. Bir nesneyi tek bir UI öğesine veya diziye, gibi ListBoxbirden çok giriş alan bir denetime bağlayabilirsiniz. Aşağıdaki kod, bir ui öğesinin DataContext verilerine nasıl bağlanacağını gösterir.

// 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;
}

Önceki örnekte adlı DataContextgrid düzen öğesi için myPanel yöntemi tarafından GetAlbumList döndürülen verilere ayarlanır. , DataContext öğelerin bağlama için kullanılan veri kaynağı ve yol gibi bağlamanın diğer özellikleri hakkında üst öğelerinden bilgileri devralmasına olanak tanır. Kod satırı, sunucudaki veriler her güncelleştirildiğinde yürütülmelidir. Örneğin, pencere başlatıldığında ve yeni bir albüm eklendiğinde yürütülür.

Aşağıdaki örnek XAML kodunda, ListBoxItemsSource="{Binding }" öğesini belirtir.

<ListBox
          ItemTemplate="{StaticResource AlbumStyle}"
          ItemsSource="{Binding }"
          IsSynchronizedWithCurrentItem="true" />

Bu, üst düzey UI öğesine bağlı verilerin de bu denetime (albüm dizisi) bağlı olduğunu belirtir. Ayrıca, ItemTemplate="{StaticResource AlbumStyle}" içindeki her öğe ListBoxiçin kullanılacak veri şablonunu belirtir. Verilerin nasıl biçimlendirileceğini belirtmek için veri şablonları da tanımlayabilirsiniz. Bu veri şablonları uygulamadaki diğer kullanıcı arabirimi öğeleri için yeniden kullanılabilir, bunun avantajı veri şablonunun tek bir yerde tanımlanması ve korunmasıdır.

Veri AlbumStyle şablonu, iki TextBlock yan yana bir ızgara düzenler. Biri Albümün adını, diğeri de albümdeki Parça sayısını belirtir.

<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>

Aşağıdaki XAML kodu ikinci ListBox bir oluşturur.

<ListBox Grid.Row="2"
            Grid.ColumnSpan="2"
            ItemTemplate="{StaticResource TrackStyle}"
            ItemsSource="{Binding Path=Tracks}" />

Kod, ItemsSource için bir yol belirtir. Bu, bu denetime bağlı verilerin en üst düzey veri değil, Tracks adlı en üst düzey verinin bir özelliği olduğunu gösterir. Bu özellik, albümde yer alan parça dizisini temsil eder. Ayrıca, farklı DataTemplate, TrackStyle adlı olarak belirtilir. Şablonun TrackStyle düzeni, AlbumStyle şablonunun düzenine benzer, ancak TextBlock'ler farklı özelliklere bağlıdır. Bunun nedeni, iki şablonun farklı veri nesneleriyle kullanılmasıdır.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek bir makine veya makineler arası bir yapılandırmada çalıştırmak için, Windows Communication Foundation örneklerini çalıştırmayönergelerini izleyin.