2011-06-12 70 views
2

導航嘗試了幾個小時後,我高度複雜的數據綁定WPF的概念混淆: -/C#:通過列表<Customer>與數據綁定文本框

什麼是展示我的業務性質最簡單的方法對象(例如Name,Street ..)在幾個文本框中?

目標是:

  • 用戶可以通過記錄(下一個,上一個)導航
  • 雙向結合性 - 在文本框的變化也應該改變底層propertys的值。

我已經想出瞭如何將框綁定到屬性,但是如何實現導航到下一個/上一個記錄?

在此先感謝!

回答

2

你會想看看ICollectionView方法。 這裏有一個工作示例:

XAML:

<Window.Resources> 
    <x:Array x:Key="myPeoples" Type="{x:Type local:Person}"> 
     <local:Person Name="Bob Marley" Address="123 street" /> 
     <local:Person Name="Ted Nugent" Address="456 street" /> 
     <local:Person Name="Ron Paul" Address="789 street" /> 
    </x:Array> 
</Window.Resources> 
<DockPanel> 
    <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal"> 
     <Button x:Name="cmdPrevious" Click="cmdPrevious_Click">Previous</Button> 
     <Button x:Name="cmdNext" Click="cmdNext_Click">Next</Button> 
    </StackPanel> 
    <Grid DockPanel.Dock="Top" DataContext="{StaticResource myPeoples}"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <TextBox Grid.Column="0" Text="{Binding Path=Name}" /> 
     <TextBox Grid.Column="1" Text="{Binding Path=Address}" /> 
    </Grid> 
</DockPanel> 

後面的代碼:

private void cmdPrevious_Click(object sender, RoutedEventArgs e) 
{ 
    Person[] peoples = this.FindResource("myPeoples") as Person[]; 
    System.ComponentModel.ICollectionView collectionView = CollectionViewSource.GetDefaultView(peoples); 
    collectionView.MoveCurrentToPrevious(); 

} 

private void cmdNext_Click(object sender, RoutedEventArgs e) 
{ 
    Person[] peoples = this.FindResource("myPeoples") as Person[]; 
    System.ComponentModel.ICollectionView collectionView = CollectionViewSource.GetDefaultView(peoples); 
    collectionView.MoveCurrentToNext(); 
}