2009-04-27 16 views
5

"WPF veri bağlama nasıl yapılır" başlıklı bir makaleyi okuduğum her zaman, bazen DataSontext ile, bazen Itemssource veya Itemssource ve DataContext ile bazı farklı varyasyonlarla yapılır, ObjectDataProvider da var ve XAML veya codebehind içinde bunlardan herhangi birine sahip olabilirsiniz, ya da hiçbir codebehind ve doğrudan XAML'den ViewModels'inize bağlayabilirsiniz.WPF veri bağlama örneklerinin kapsamlı bir koleksiyonunu bilen var mı?

XAML kendi içinde kullanmak farklı sözdizimlerinin düzinelerce örnek var gibi görünüyor:

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

ve

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

Bu iki kod örnekleri, örneğin, aynı şeyi yapmak:

:

1. hiçbir kod arkada ile ObjectDataProvider kullanma Hiçbir DataContext ile

<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. Örnek: ve sonra belirli bir şekilde açıklamak

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

kimse yerine söyleyerek tarafından WPF veri açıklayan bir kaynak biliyor mu, "Eğer veri bağlamayı nasıl burada" ancak bunun yerine, numaralı girişimi denemek için çeşitli yollarını açıklayın ve örn.'un avantaj ve dezavantajlarının neler olduğunu gösterin. DataContext sahip veya değil, XAML veya kod arkasındaki, vb bağlama?

cevap

1

Blog'u Bea Stollnitz'dan önerebilirim. Yanılmıyorsam, Microsoft'ta çalışıyor ve özellikle veri bağlamada WPF'deki geliştirmeye katılıyor. Gerçekten çok sayıda büyük WPF öğreticisi var; Burada gerçekten iyi bir bilgi bulmalısın.

İlgili konular