我的应用程序在启动时使用从数据库中检索的数据填充DataGrid。我的字段是:姓名,ID和状态。前两个没有问题,但第三个(状态)是一个int,可以是1或0,表示有效或无效。DataGrid排序/更新问题
我决定创建一个用户控件来显示“状态”栏。根据“状态”的值,它只不过是一个变成绿色或红色的圆圈。控件的默认颜色是红色。
我还创建了一个列表对象(“数据”),它包含我的信息以及与它的相应的颜色控制。到目前为止没有问题。一切正常,如果我快速观察我的数据对象,所有事情都应该如此。
我的问题是,经过我填充“myDataGrid.ItemsSource =数据的”数据网格,每一个控制“状态”显示为红色,当他们中的一些应为绿色。如果我在任何给定时间断点并快速观看我的“数据”对象,一切都很好,但DataGrid不会更新。 排序也一样。如果更改任何控件的颜色,排序任何列后,它会将所有用户控件的颜色重置为默认(红色)。
几个测试和研究,我觉得现在的问题是,在DataGrid更新自己的项目源端和instanciates,而不是用我的数据对象的那些新的用户控件后。
有没有办法解决这个问题?我已经尝试了一些我在网络上发现的解决方案,但迄今为止没有任何工作!
我用你的第二recomendation和摆脱从我的目标我的用户控制的,然后我去细胞通过在该列的小区中以一个更新的状态控制之一,它的工作原理精细。但是,当我对任何给定的列进行排序时,它会将每个控件重置为默认填充(红色)。我知道DataGrid.Sorting事件,但它不起作用。有没有其他方法可以解决这个问题? 如果有问题,所有列都是只读,不知道是否有帮助... 顺便说一句,感谢您的回复! – David 2012-03-13 21:34:15
@David,你是否看到我指定的排序成员路径模板列?解决你所告诉我的这个问题是令人兴奋的。 Datagrid的排序只发生在单元**表示的**数据上,而不是单元**具有或包含**的数据。 'SortMemberPath'专门用于数据网格的排序功能。因为你没有使用它,所以排序不会像你期望的那样发生。 – 2012-03-14 05:15:10
对不起,我迟到了。其实我看到了,但只有在我发表我最后的评论之后:P。我在INotifyPropertyChanged实现方面挣扎了一下,但在解决它之后,我又回到了这里,几乎将XAML代码复制到了我的。它很棒! 非常感谢 – David 2012-03-14 20:15:45