2009-04-27 12 views
5

Parece que cada vez que leo un artículo sobre "cómo hacer el enlace de datos WPF", se hace con una variación diferente, a veces con DataContext, a veces sin, a veces con Itemssource o ambos Itemssource y DataContext, también hay ObjectDataProvider, y puede tener cualquiera de estos en XAML o codebehind, o sin código subyacente y enlazar directamente desde XAML a sus ViewModels.¿Alguien sabe de una colección exhaustiva de ejemplos de enlaces de datos de WPF?

Parece que hay docenas de diferentes sintaxis para utilizar dentro del propio XAML, por ejemplo:

<ListBox ItemsSource="{Binding Source={StaticResource Customers}}"> 

y

<ListBox DataContext="{StaticResource Customers}" ItemsSource="{Binding}"> 

Estos dos ejemplos de código, por ejemplo, hacen lo mismo:

1. Usando ObjectDataProvider sin código subyacente:

<Window x:Class="TestDataTemplate124.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:TestDataTemplate124" 
    Title="Window1" Height="300" Width="300"> 
    <Window.Resources> 
     <ObjectDataProvider x:Key="Customers" 
          ObjectType="{x:Type local:Customer}" 
          MethodName="GetAllCustomers"/> 
    </Window.Resources> 
    <StackPanel> 
     <ListBox DataContext="{StaticResource Customers}" ItemsSource="{Binding}"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding FirstName}"/> 
         <TextBlock Text=" "/> 
         <TextBlock Text="{Binding LastName}"/> 
         <TextBlock Text=" ("/> 
         <TextBlock Text="{Binding Age}"/> 
         <TextBlock Text=")"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </StackPanel> 
</Window> 

2. Ejemplo sin DataContext:

<Window x:Class="TestDataTemplate123.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:TestDataTemplate123" 
    Title="Window1" Height="300" Width="300"> 
    <StackPanel> 
     <ListBox x:Name="ListBox1"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding FirstName}"/> 
         <TextBlock Text=" "/> 
         <TextBlock Text="{Binding LastName}"/> 
         <TextBlock Text=" ("/> 
         <TextBlock Text="{Binding Age}"/> 
         <TextBlock Text=")"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </StackPanel> 
</Window> 

    using System.Collections.ObjectModel; 
    using System.Windows; 

    namespace TestDataTemplate123 
    { 
     public partial class Window1 : Window 
     { 
      public Window1() 
      { 
       InitializeComponent(); 
       ListBox1.ItemsSource = Customer.GetAllCustomers(); 
      } 
     } 
    } 

¿Alguien sabe de una fuente que explica WPF enlace de datos por vez de decir "aquí es cómo lo haces de enlace de datos" y luego explicar una manera particular, pero en su lugar, intente explicar las diversas formas de realizar el enlace de datos y mostrar quizás cuáles son las ventajas y desventajas de de, por ejemplo tener DataContext o no, vinculando en XAML o código subyacente, etc.?

Respuesta

1

Puedo recomendarle el blog desde Bea Stollnitz. Si no me equivoco, ella trabaja en Microsoft y está involucrada en el desarrollo de WPF, particularmente en el enlace de datos. Ella realmente tiene algunos excelentes tutoriales de WPF, muchos sobre enlaces de datos. Deberías encontrar algo realmente bueno aquí.

Cuestiones relacionadas