【问题标题】:C#: Navigate through List<Customer> with Data-bound textboxesC#:使用数据绑定文本框在 List<Customer> 中导航
【发布时间】:2011-06-12 15:25:47
【问题描述】:

尝试了几个小时后,我对 wpf 复杂的数据绑定概念感到非常困惑:-/

在几个文本框中显示我的业务对象(例如名称、街道...)的属性的最简单方法是什么?

目标是:

  • 用户可以浏览记录(下一个、上一个)
  • 双向绑定 - 文本框的更改也应更改基础属性的值。

我已经想出了如何将框绑定到属性,但是如何实现到下一条/上一条记录的导航?

提前致谢!

【问题讨论】:

    标签: c# wpf data-binding textbox


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 2013-03-21
      • 1970-01-01
      • 2011-09-30
      • 2011-07-01
      • 2014-03-31
      相关资源
      最近更新 更多