我有几个数据网格的应用程序,并导出到excel命令,该命令将聚焦数据网格作为命令参数。是否可以将CommandParameter绑定到FocusManager.FocusedElement,或者我必须显式设置它们?
提前感谢
发布于 2011-10-21 21:57:57
可以,您可以绑定到FocusedElement。类似于:
<Button ...
CommandParameter="{Binding (FocusManager.FocusedElement), RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />根据您的焦点范围,您可能需要将窗口更改为另一个元素。
但就我个人而言,我会设置命令的处理程序来查看参数是否为空。如果是,那么我会以编程方式获取FocusManager.FocusedElement。
var element = parameter as DataGrid;
if (element == null)
element = FocusManager.FocusedElement as DataGrid.您还可以根据需要向上搜索可视化树,以获取相关的DataGrid。
发布于 2011-10-21 21:30:01
为什么你不能在你的ViewModel上有CLR属性,比如"SelectedDataGrid",每当你的DataGrid获得焦点时,你就会更新它。只需在代码中使用该属性,而不是从视图中传递它。
https://stackoverflow.com/questions/7849817
复制相似问题