【发布时间】:2014-06-20 10:45:01
【问题描述】:
我搜索了很多线程,但找不到任何可以解决我的问题的方法,而且我真的不知道应该使用哪些关键字。我有一个由 DataSet 填充的 DataGrid,其中包含我手动指定的列。
在我的专栏“总计”中,绑定设置为:
<DataGridTextColumn Header="Total"
Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type UserControl}},
Path=DataContext.Total}"
Total 属性不在绑定到我的 DataGrid 的 DataSet 中,这就是我使用这种 Binding 的原因。
问题是,当我在“总计”单元格中设置一个值时,就像任何用户所做的那样,该值会在我的列的每个单元格中重复。
所以,我知道这是因为这个属性,因为每次我更改单元格的值时,Total 属性都会获取这个新值并将其发送回我的列。我可以使用使用所选行号或其他内容的条件,我对我应该做什么有一些想法,但我不能在我的 Xaml 代码中这样做。
我尝试在后面的代码中创建一个 Binding(),但它并没有真正起作用,我不确定它是否可以改变任何东西。
在这种情况下,有没有办法每行使用一个值?
谢谢!
【问题讨论】:
-
最简单的方法是不使用 DataSet 而是使用自定义类来表示您的数据。然后,您可以添加一个表示其他字段总数的属性并将您的列绑定到该属性。这也将支持使用 MVVM 设计模式msdn.microsoft.com/en-us/magazine/dd419663.aspx
-
@LeeO。嘿,感谢您的链接,我在几个月前开始使用 WPF 时尝试阅读该链接。不幸的是,我别无选择,只能使用 DataSet,这就是我没有尝试其他方法的原因。实际上是代表其他字段的总和,但是在我的列中的每个单元格中,这就是问题所在。
-
向 DataSet 中的 DataTable 添加一列,该列使用表达式计算其值并将总列绑定到该列。 msdn.microsoft.com/en-us/library/…
-
好的,我不确定我是否可以修改我的数据集,但我会试一试,谢谢你的提示。我想没有其他解决方案?
-
您还可以对总列使用多重绑定,并将其绑定到您要汇总的列所绑定的所有相同绑定。然后创建一个 IMultiValueConverter 来汇总这些值。