Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何绑定到窗口';谁指挥?_C#_Wpf_Xaml_Data Binding_Dependency Properties - Fatal编程技术网

C# 如何绑定到窗口';谁指挥?

C# 如何绑定到窗口';谁指挥?,c#,wpf,xaml,data-binding,dependency-properties,C#,Wpf,Xaml,Data Binding,Dependency Properties,我在一个名为“RefreshCommand”(ICommand类型)的用户控件上有一个依赖项属性,我想将该属性绑定到主窗口中的命令 如果我用代码写这个,它会工作 MainToolbar.RefreshCommand = (ICommand)this.CommandBindings[0].Command; 。。但是我如何用XAML来表达呢 另外,我想通过命令名而不是索引来引用该命令 谢谢,您可以通过以下方式将XAML绑定到其他XAML元素: 元素名称: RefreshCommand=“{Bi

我在一个名为“RefreshCommand”(ICommand类型)的用户控件上有一个依赖项属性,我想将该属性绑定到主窗口中的命令

如果我用代码写这个,它会工作

MainToolbar.RefreshCommand = (ICommand)this.CommandBindings[0].Command;
。。但是我如何用XAML来表达呢

另外,我想通过命令名而不是索引来引用该命令


谢谢,

您可以通过以下方式将XAML绑定到其他XAML元素:

  • 元素名称:
RefreshCommand=“{Binding ElementName=window,Path=CommandBindings[0]。Command}”

  • 论“你自己”的性质
RefreshCommand=“{Binding RelativeSource={x:Static RelativeSource.Self},Path=CommandBindings[0].Command}”

  • 沿着树向上排列,带有AncestorType
RefreshCommand=“{Binding Path=CommandBindings[0]。命令,RelativeSource={RelativeSource antestortype={x:Type Window}}}”


如果工具栏是窗口中的子工具栏,我想第三个应该可以正常工作。

我建议这样做

3类

MainWindow.xaml (Window)
MainViewModel.cs (Class)
UserControl.xaml (UserControl)
将主窗口的数据上下文设置为ViewModel。除非您显式更改,否则UserControl将继承此数据上下文。在用户控件/主窗口上设置控件,以绑定到主视图模型上的中继命令


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

有几件事。1-如何确定要查找的命令始终是列表中的第一个命令?2-你到底想在这里实现什么?1)这就是问题所在,我真的需要一种方法来命名它。2) 我试图实现的是在主窗口和用户控件之间共享命令的方法。因此,我的用户控件上有一个属性,我想将主windows属性绑定到该属性中。应该已经指定-是否有方法通过其名称访问该命令?我还没有尝试过,但是您可以在XAML中指定命令绑定,并为它们指定一个名称,以便使用elementname引用?