7

我有几个数据网格的应用程序并导出到 excel 命令,它将焦点数据网格作为命令参数。是否可以将 CommandParameter 绑定到 FocusManager.FocusedElement,还是必须明确设置它们?

提前致谢

4

2 回答 2

7

是的,您可以绑定到 FocusedElement。就像是:

<Button ...
    CommandParameter="{Binding (FocusManager.FocusedElement), RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />

根据您的焦点范围,您可能需要将 Window 更改为另一个元素。

但就个人而言,我会设置命令的处理程序以查看参数是否为空。如果是,那么我将以编程方式获取FocusManager.FocusedElement.

var element = parameter as DataGrid;
if (element == null)
    element = FocusManager.FocusedElement as DataGrid.

您还可以根据需要向上搜索可视化树以获取关联的 DataGrid。

于 2011-10-21T13:57:56.940 回答
1

为什么你不能让你的 ViewModel 上的 CLR 属性说明"SelectedDataGrid"你在任何 DataGrid 获得焦点时更新的属性。只需在您的代码中使用该属性,而不是从您的视图中传递它。

于 2011-10-21T13:30:01.483 回答