2009-04-27 10 views
5

Sembra che ogni volta che leggo un articolo su "come eseguire il binding dei dati WPF", è fatto con qualche variazione diversa, a volte con DataContext, a volte senza, a volte con Itemssource o sia Itemssource che DataContext, c'è anche ObjectDataProvider e puoi avere uno di questi in XAML o codebehind, o codebehind e collegarli direttamente da XAML a ViewModels.Qualcuno sa di una raccolta esauriente di esempi di associazione dati WPF?

Sembra che ci sono decine di differenti sintassi da utilizzare all'interno del XAML stesso, ad esempio:

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

e

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

Questi due esempi di codice, ad esempio, fanno la stessa cosa:

1. Utilizzando ObjectDataProvider senza code-behind:

<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. Esempio senza 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(); 
      } 
     } 
    } 

Qualcuno sa di una fonte che spiega WPF Databinding da invece di dire "ecco come si fa l'associazione dati" e poi spiegare in un modo particolare, ma, invece, provare a spiegare i vari modi per fare il databinding e mostrare forse quali sono i vantaggi e gli svantaggi di es. avendo DataContext o no, vincolante in XAML o code-behind, ecc.?

risposta

1

Posso consigliarti il ​​blog da Bea Stollnitz. Se non sbaglio, lavora in Microsoft ed è coinvolta nello sviluppo di WPF, in particolare nel database. Ha davvero dei fantastici tutorial su WPF, molti su database. Dovresti trovare alcune informazioni davvero interessanti qui.

Problemi correlati