C#:在带有数据绑定文本框的List <Customer>中进行导航

问题描述

|| 尝试了几个小时后,我对wpf的复杂数据绑定概念非常困惑:-/ 在几个文本框中显示我的业务对象(例如Name,Street ..)属性的最简单方法是什么? 目标是: 用户可以浏览记录(下一个,上一个) 双向绑定-文本框中的更改也应更改基础属性的值。 我已经弄清楚了如何将框绑定到属性,但是如何实现到下一个/上一个记录的导航? 提前致谢!     

解决方法

        您将要查看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();
}