Compartir vía


Enlace de datos en un cliente de Windows Presentation Foundation

El ejemplo WPFDataBinding muestra el uso del enlace de datos en un cliente de Windows Presentation Foundation (WPF). En el ejemplo se usa un servicio de Windows Communication Foundation (WCF) que genera aleatoriamente una matriz de álbumes para devolver al cliente. Cada álbum tiene un nombre, un precio y una lista de pistas de álbum. Las pistas del álbum tienen un nombre y una duración. La información que devuelve el servicio se enlaza automáticamente a la interfaz de usuario (UI) proporcionada por el cliente de Windows Presentation Foundation (WPF).

Nota:

El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

El enlace de datos permite enlazar automáticamente un origen de datos a una interfaz de usuario. Esto simplifica el modelo de programación porque no requiere actualizar mediante programación cada elemento de interfaz de usuario con los datos de un objeto de datos o una matriz de objetos de datos. Puede enlazar un objeto a un único elemento de interfaz de usuario o una matriz a un control que tome varias entradas, como .ListBox El siguiente código muestra cómo enlazar datos al DataContext de un elemento de interfaz de usuario.

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

En el ejemplo anterior, el DataContext para el elemento de diseño grid denominado myPanel se establece en los datos devueltos por el método GetAlbumList. DataContext Permite que los elementos hereden información de sus elementos primarios sobre el origen de datos que se usa para el enlace, así como otras características del enlace, como la ruta de acceso. La línea de código debe ejecutarse cada vez que se actualizan los datos del servidor. Por ejemplo, se ejecuta cuando se inicializa la ventana y cuando se agrega un nuevo álbum.

En el siguiente ejemplo de código XAML, el ListBox especifica ItemsSource="{Binding }".

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

Esto especifica que los datos enlazados al elemento de interfaz de usuario de nivel superior también están enlazados a este control (es decir, la matriz de Álbumes). Además, ItemTemplate="{StaticResource AlbumStyle}" especifica la plantilla de datos que se va a usar para cada elemento de .ListBox También puede definir plantillas de datos para especificar cómo se deben dar formato a los datos. Estas plantillas de datos se pueden reutilizar para otros elementos de la interfaz de usuario de la aplicación, la ventaja es que la plantilla de datos se define y mantiene en un solo lugar.

La plantilla de datos AlbumStyle pone en paralelo una cuadrícula con dos TextBlocks. Uno especifica el nombre del álbum y el otro el número de pistas del á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>

El código XAML siguiente crea un segundo ListBox.

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

El código especifica una ruta de acceso para ItemsSource. Esto indica que los datos enlazados a este control no son los datos de nivel superior, sino una propiedad de los datos de nivel superior denominados Tracks. Esta propiedad representa la matriz de pistas contenida dentro del álbum. Además, se especifica un DataTemplate diferente llamado TrackStyle. El diseño de la TrackStyle plantilla es similar al de la AlbumStyle plantilla, pero los TextBlocks están enlazados a propiedades diferentes. Esto se debe a que las dos plantillas se usan con objetos de datos diferentes.

Para configurar, compilar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado el procedimiento de instalación única para los ejemplos de Windows Communication Foundation.

  2. Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Building the Windows Communication Foundation Samples.

  3. Para ejecutar el ejemplo en una configuración de una máquina única o entre máquinas, siga las instrucciones de Ejecución de los ejemplos de Windows Communication Foundation.