【问题标题】:C# wpf proper way to bind DisplayIndex property of datagrid columnC# wpf绑定数据网格列的DisplayIndex属性的正确方法
【发布时间】:2023-03-21 00:48:01
【问题描述】:

我已将列的显示索引绑定到数据上下文中的整数变量 (DisplayIndex_Name)。

XAML 代码:

<DataGridTextColumn Header="Name" DisplayIndex="{Binding Path=DisplayIndex_Name}" />

我的数据网格中的列位置现在等于存储在 DisplayIndex_Name 中的值。

(如果我将此设置为 0,这将显示为我的第一列)

问题是当我有多个列时,如果我更改其中 1 个的 displayIndex,所有其他显示索引都会更新,因为每一列都必须具有唯一值。

这意味着 displayindex != 应该绑定的整数值..

知道如何将数据上下文中的变量更新为 displayindex 的确切值吗?

【问题讨论】:

  • 基本上我只是想让用户决定我的列的显示索引,有什么建议吗?

标签: c# wpf datagrid multiple-columns


【解决方案1】:

您没有在绑定中设置Mode=TwoWay,因此当您移动列时,它们不会更新后端。我认为添加这将解决问题。

【讨论】:

    【解决方案2】:

    在你的情况下它只是错误的索引,在我的情况下可能会崩溃。我对此进行了大量调查以找出根本原因并解决问题,只是放在这里以防万一有人真的需要在显示索引中绑定 TwoWay(这是我的情况)。

    根本原因:

    当我们设置几个显示索引数据网格时会一一应用。并且每次数据网格应用一个索引时,它需要修改其他索引以确保所有索引一起有效,并且双向绑定会将这个值返回给viewmodel,这最终会改变我们想要的显示顺序,甚至索引超出范围。

    解决方法:

    最后一个解决方法存在一些问题,我正在使用 OneTime 和 OneWayToSource 模式进行客户绑定,这将解决这个问题。完成后会在这里更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 2013-06-17
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多