我有几个数据网格的应用程序并导出到 excel 命令,它将焦点数据网格作为命令参数。是否可以将 CommandParameter 绑定到 FocusManager.FocusedElement,还是必须明确设置它们?
提前致谢
我有几个数据网格的应用程序并导出到 excel 命令,它将焦点数据网格作为命令参数。是否可以将 CommandParameter 绑定到 FocusManager.FocusedElement,还是必须明确设置它们?
提前致谢
是的,您可以绑定到 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。
为什么你不能让你的 ViewModel 上的 CLR 属性说明"SelectedDataGrid"
你在任何 DataGrid 获得焦点时更新的属性。只需在您的代码中使用该属性,而不是从您的视图中传递它。