绑定到 FocusManager.FocusedElement

发布于 2024-12-11 08:23:29 字数 130 浏览 3 评论 0原文

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

提前致谢

I have application with several datagrids and export to excel command, which gets focused datagrid as a command parameter. Is it possible to bind CommandParameter to FocusManager.FocusedElement, or do I have to set them explicity?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白色秋天 2024-12-18 08:23:29

是的,您可以绑定到 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。

Yes, you can bind to the FocusedElement. Something like:

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

Depending on your focus scopes, you may need to change the Window to another element.

But personally, I'd setup up the command's handler to see if the parameter is null. If it is then I'd programmatically get the FocusManager.FocusedElement.

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

You can also search up the visual tree as needed to the get the associated DataGrid.

一个人的旅程 2024-12-18 08:23:29

为什么你不能在 ViewModel 上设置一个 CLR 属性,比如 "SelectedDataGrid" ,每当你的任何 DataGrid 获得焦点时就更新它。只需在代码中使用该属性,而不是从视图传递它。

Why can't you have the CLR property on your ViewModel say "SelectedDataGrid" which you updates whenever any of your DataGrid gets Focus. Simply used that property in your code, instead of passing it from your View.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文