C#wpf绑定datagrid列的DisplayIndex属性的正确方法

时间:2013-05-07 07:03:52

标签: c# wpf datagrid multiple-columns

我已将我的列的displayindex绑定到我的datacontext中的整数变量(DisplayIndex_Name)。

XAML代码:

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

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

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

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

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

知道如何将我的datacontext中的变量更新为displayindex的确切值吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

根本原因:

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

解决方法:

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