Vinculação de dados em um cliente do Windows Presentation Foundation

O exemplo WPFDataBinding demonstra o uso de vinculação de dados em um cliente Windows Presentation Foundation (WPF). O exemplo usa um serviço Windows Communication Foundation (WCF) que gera aleatoriamente uma matriz de álbuns para retornar ao cliente. Cada álbum tem um nome, um preço e uma lista de faixas do álbum. As faixas do álbum têm nome e duração. As informações retornadas pelo serviço são automaticamente vinculadas à interface do usuário (UI) fornecida pelo cliente Windows Presentation Foundation (WPF).

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.

A associação de dados permite que uma fonte de dados seja vinculada automaticamente a uma interface do usuário. Isso simplifica o modelo de programação porque não requer que você atualize programaticamente cada elemento da interface do usuário com os dados de um objeto de dados ou uma matriz de objetos de dados. Você pode vincular um objeto a um único elemento da interface do usuário ou uma matriz a um controle que usa várias entradas, como um ListBoxarquivo . O código a seguir mostra como vincular dados ao DataContext de um elemento da interface do usuário.

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

No exemplo anterior, o DataContext elemento for the grid layout nomeado myPanel é definido como os dados retornados pelo GetAlbumList método. O DataContext permite que os elementos herdem informações de seus elementos pai sobre a fonte de dados usada para vinculação, bem como outras características da associação, como o caminho. A linha de código deve ser executada sempre que os dados no servidor são atualizados. Por exemplo, ele é executado quando a janela é inicializada e quando um novo álbum é adicionado.

No código XAML de exemplo a seguir, o ListBox especifica ItemsSource="{Binding }".

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

Isso especifica que os dados vinculados ao elemento de interface do usuário de nível superior também estão vinculados a esse controle (ou seja, a matriz de álbuns). Além disso, ItemTemplate="{StaticResource AlbumStyle}" especifica o modelo de dados a ser usado para cada item no ListBox. Você também pode definir modelos de dados para especificar como os dados devem ser formatados. Esses modelos de dados podem ser reutilizados para outros elementos da interface do usuário no aplicativo, a vantagem é que o modelo de dados é definido e mantido em um só lugar.

O AlbumStyle modelo de dados estabelece uma grade com dois TextBlocks lado a lado. Um especifica o nome do álbum e o outro o número de faixas no álbum.

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

O código XAML a seguir cria um segundo ListBoxarquivo .

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

O código especifica um caminho para o ItemsSource. Isso indica que os dados vinculados a esse controle não são os dados de nível superior, mas uma propriedade dos dados de nível superior chamados Tracks. Esta propriedade representa a matriz de faixas contidas no álbum. Além disso, um nome TrackStyle diferente DataTemplate é especificado. O layout do TrackStyle modelo é semelhante ao do AlbumStyle modelo, mas os TextBlocks estão vinculados a propriedades diferentes. Isso ocorre porque os dois modelos são usados com objetos de dados diferentes.

Para configurar, compilar e executar o exemplo

  1. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.

  3. Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.