【问题标题】:Updating BindingSource's Current property with Datagrid's SelectedItem property?使用 Datagrid 的 SelectedItem 属性更新 BindingSource 的 Current 属性?
【发布时间】:2011-08-14 15:08:04
【问题描述】:

有没有办法将 BindingSource 的当前项属性与 Datagrid 的选定项同步?例如,我单击 Datagrid 中的第 10 行,当我按下按钮调用 BindingSource.MoveNext() 然后将 Datagrid.SelectedItem 设置为 BindingSource.Current;突出显示的行是第 2 行而不是第 11 行。

我做错了吗?我只是想让 datagrid 在操作后突出显示下一行(例如更新我单击的行),但 Datagrid 似乎没有提供这样做的方法,我只剩下处理 BindingSource 了。

【问题讨论】:

    标签: c# wpf datagrid highlight bindingsource


    【解决方案1】:

    当您单击DataGridView 中的特定行时,将BindingSource 对象的Position 属性设置为适当的值,而不是为DataGridView 分配选定的行。

    【讨论】:

    • 遗憾的是,BindingSource.Current 只是一个吸气剂 - 你无法设置它。
    • 啊对...好吧,我已经考虑了这两个选项,除了 WPF Toolkit 的 Datagrid 控件(据我所知没有 Datagridview)缺乏显示行索引整数的能力(不使用一些技巧,即),这是 Position 所要求的。除非你知道我不知道的事情!
    • 等一下。毕竟这很简单。有一个 selectedIndex 函数!也返回一个整数! :D
    • 同步的简单方法是我在下面的答案。在那里你可以很容易地说 myview.MoveToPrevious() 或 myview.MoveToNext() 并且你选择的项目会这样做:) 根本没有索引设置
    【解决方案2】:

    如果您希望您的数据网格和您的集合同步,您必须为您的数据网格设置 IsSynchronizedWithCurrentItem = true。您的集合应该是 ICollectionView 或 BindingListCollectionView 类型。您可以通过

    实现这一目标
    this.view = CollectionViewSource.GetDefaultView(this.mysourcecollection)
    

    如果您这样做,您选择的项目将始终保持同步。您可以使用 ICollectionView 的 MoveTo 方法来逐步浏览您的项目。

    如果您还有其他问题,请留下一些 cmets

    编辑:

    如果您使用数据表作为集合源,只需创建一个 BindingListCollectionView 类型的属性。

    public BindingListCollectionView MyView
    { get;set;}
    

    在初始化数据表后,以这种方式初始化 BindingListCollectionView:

     this.MyView = (BindingListCollectionView )CollectionViewSource.GetDefaultView(this.mydatatable);
    

    然后只需将此视图用作数据网格的 ItemsSource

    <DataGrid ItemsSource="{Binding MyView}" IsSynchronizedWithCurrentItem="true" />
    

    你现在能做的就是打电话:

    this.MyView.MoveCurrentToFirst();
    this.MyView.MoveCurrentToLast();
    this.MyView.MoveCurrentToNext();
    this.MyView.MoveCurrentToPrevious();
    //and some other
    

    【讨论】:

    • 我在 WPF 窗体上的 DataGrid 控件的 DataContext 设置为 BindingSource,其 Datasource 设置为 Datatable。您能否评论一下您的答案是否可以使用此设置,我在理解它时遇到了一些困难。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多