我在名为“RefreshCommand”(ICommand类型)的用户控件上有一个依赖项属性,我想在主窗口中绑定到Command。
如果我在代码中写这个,它可以工作......
MainToolbar.RefreshCommand = (ICommand)this.CommandBindings[0].Command;
..但我怎么能在XAML中表达呢?
我还想通过名称而不是索引来引用命令。
谢谢,
答案 0 :(得分:1)
您可以通过例如
将XAML绑定到其他XAML元素 RefreshCommand="{Binding ElementName=window, Path=CommandBindings[0].Command}"
RefreshCommand="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=CommandBindings[0].Command}"
RefreshCommand="{Binding Path=CommandBindings[0].Command, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
如果工具栏是来自窗口的孩子,我想第三个应该可以正常工作。
答案 1 :(得分:0)
我建议你这样做。
3个课程
MainWindow.xaml (Window)
MainViewModel.cs (Class)
UserControl.xaml (UserControl)
将MainWindow的数据上下文设置为ViewModel。除非您明确更改,否则UserControl将保留此数据上下文。在用户控件/主窗口上设置控件以绑定到主视图模型上的中继命令。
这将为您提供所需的上下文,无需硬编码索引(xxx。[0])并仍然保持一定程度的分离。