在WPF中将文本绑定到数据网格的属性的正确方法是什么?

时间:2012-03-02 22:27:37

标签: wpf

我有一个WPF数据网格绑定到一个可观察的集合,它正在按预期工作。

我现在要做的是在其下面添加文字说:“所选行数: {count goes here}

这样做的正确方法是什么?我可以在视图模型中添加一个名为SelectedCount的新属性或类似的东西并绑定到该属性,但感觉不对。这似乎是多余的。另外,我可以在后面的代码中动态设置标签文本,但我不确定这是否也是“正确”的地方。

以下是一个例子。

编辑:

请假装有一个复选框列标题,其目的是提供检查/取消选中所有功能。此标题复选框的状态不应计入最终计数。

example

1 个答案:

答案 0 :(得分:1)

您可以使用元素绑定以声明方式绑定到XAML中的SelectedItems.Count属性:

<TextBlock Text="{Binding ElementName=MyDataGrid,
   Path=SelectedItems.Count, StringFormat=Number of selected rows: {0}}" />

<强>更新

据推测,您正在使用MVVM,因此向视图模型添加SelectedXCount属性是视图模型的完美合理应用。在视图模型中使用它的优点是您可以根据所选项目的数量进行单元测试。例如。如果要检查用户是否只能进度(CanNext属性返回true),如果用户选择了某些项目。

SelectedItems属性不是DependencyProperty所以不能绑定,但是有许多在线文章在MVVM中使用DataGrid时解决了这个问题。大多数解决方案都涉及使用一种机制在调用DataGrid的SelectionChanged事件时调用视图模型命令。