如何绑定到一个windows命令

本文关键字:一个 windows 命令 绑定 何绑定 | 更新日期: 2023-09-27 18:13:35

我有一个名为"RefreshCommand" (ICommand类型)的用户控件的依赖属性,我想将其绑定到主窗口中的命令。

如果我把它写在代码中,它可以工作…

MainToolbar.RefreshCommand = (ICommand)this.CommandBindings[0].Command;

. .但如何在XAML中表达呢?

我还想通过命令的名称而不是索引来引用命令。

谢谢,

如何绑定到一个windows命令

你可以在XAML中绑定到其他XAML元素,例如

  • 元素名称:

RefreshCommand="{Binding ElementName=window, Path=CommandBindings[0].Command}"

  • 关于"yourself"的属性

RefreshCommand="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=CommandBindings[0].Command}"

  • 沿着树向上与祖宗类型

RefreshCommand="{Binding Path=CommandBindings[0].Command, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"

如果工具栏是子窗口,我想第三个应该工作得很好。

我建议这样做。

3类
MainWindow.xaml (Window)
MainViewModel.cs (Class)
UserControl.xaml (UserControl)

将主窗口的数据上下文设置为ViewModel。UserControl将继承这个数据上下文,除非您显式地更改它。在用户控件/主窗口上设置控件,以绑定到主视图模型上的中继命令。

这将为您提供所需的上下文,而无需硬编码索引(xxx.[0]),并且仍然保持一定程度的分离。

相关文章: