2009-04-27 12 views
5

Es scheint, dass jedes Mal, wenn ich einen Artikel über "wie WPF Datenbindung zu tun", ist es mit verschiedenen Variationen, manchmal mit DataContext, manchmal ohne, manchmal mit ItemSource oder ItemSource und DataContext, gibt es auch ObjectDataProvider und Sie können beliebige davon in XAML oder Codebehind oder ohne Codebehind haben und direkt von XAML an Ihre ViewModels binden.Kennt jemand eine umfangreiche Sammlung von WPF-Databinding-Beispielen?

Es scheint, wie es Dutzende von verschiedenen Syntaxen sind selbst innerhalb der XAML zu verwenden, zB:

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

und

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

Diese beiden Codebeispiele zum Beispiel das gleiche tun:

1. Verwenden ohne Code-Behind-Object:

<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. Beispiel ohne 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(); 
      } 
     } 
    } 

Kennt jemand eine Quelle, die von anstelle von WPF-Datenbindung erklärt „ist hier, wie Sie Datenbindung tun“ nur sagen, und dann eine bestimmte Art und Weise erklären, aber stattdessen versuchen, erklären die verschiedenen Möglichkeiten, um Databinding gehen und zeigen, was die Vor- und Nachteile von z DataContext oder nicht, Bindung in XAML oder Code-Behind usw.?

Antwort

1

Ich kann Ihnen den Blog von Bea Stollnitz empfehlen. Wenn ich mich nicht irre, arbeitet sie bei Microsoft und beteiligt sich an der Entwicklung von WPF, insbesondere im Databinding. Sie hat wirklich einige großartige WPF-Tutorials, viele zum Thema Datenbindung. Sie sollten hier einige wirklich gute Informationen finden.

Verwandte Themen