共用方式為


Windows Presentation Foundation 用戶端中的數據系結

WPFDataBinding 範例示範如何在 Windows Presentation Foundation (WPF) 用戶端中使用數據系結。 此範例會使用 Windows Communication Foundation (WCF) 服務,隨機產生專輯陣列以返回用戶端。 每個專輯都有名稱、價格和專輯曲目清單。 專輯曲目有名稱和持續時間。 服務傳回的信息會自動系結至 Windows Presentation Foundation (WPF) 用戶端所提供的使用者介面(UI)。

備註

此範例的安裝程式和建置指示位於本主題結尾。

數據系結可讓數據源自動系結至UI。 這可簡化程式設計模型,因為它不需要以程式設計方式使用數據對象或數據物件的數位來更新每個UI元素。 您可以將物件係結至單一 UI 元素或陣列至接受多個輸入的控制項,例如 ListBox。 下列程式代碼示範如何將資料系結至 UI 元素中的 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 是一個grid版面配置元素,其myPanel 被設定為方法 GetAlbumList 所回傳的資料。 DataContext允許專案從其父元素繼承用於系結之數據源的資訊,以及系結的其他特性,例如路徑。 每次更新伺服器上的數據時,都必須執行程式代碼行。 例如,當視窗初始化,以及新增新專輯時,就會執行它。

在下列範例 XAML 程式代碼中 ListBox ,指定 ItemsSource="{Binding }"

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

這會指定繫結至最上層 UI 元素的數據也會繫結至此控制項(也就是 Albums 的數組)。 此外, ItemTemplate="{StaticResource AlbumStyle}" 指定要用於 中 ListBox每個項目的數據範本。 您也可以定義數據範本,以指定應該如何格式化數據。 這些數據範本可以重複使用於應用程式中的其他 UI 元素,優點是數據範本是在一個地方定義和維護。

數據 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。 範本的配置 TrackStyleAlbumStyle 範本的版面配置類似,但 TextBlock會系結至不同的屬性。 這是因為這兩個範本會搭配不同的數據物件使用。

要設定、建置和執行範例,請執行以下步驟:

  1. 請確定您已針對 Windows Communication Foundation 範例 執行One-Time 安裝程式。

  2. 若要建置解決方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例 中的指示。

  3. 若要在單一或跨計算機組態中執行範例,請遵循執行 Windows Communication Foundation 範例 中的指示。