【发布时间】:2011-04-04 18:04:54
【问题描述】:
假设我有一个带有返回 Command 的属性的 Window(实际上,它是 ViewModel 类中带有 Command 的 UserControl,但让我们尽可能简单地重现问题)。
以下作品:
<Window x:Class="Window1" ... x:Name="myWindow">
<Menu>
<MenuItem Command="{Binding MyCommand, ElementName=myWindow}" Header="Test" />
</Menu>
</Window>
但以下不起作用。
<Window x:Class="Window1" ... x:Name="myWindow">
<Grid>
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Command="{Binding MyCommand, ElementName=myWindow}" Header="Test" />
</ContextMenu>
</Grid.ContextMenu>
</Grid>
</Window>
我得到的错误信息是
System.Windows.Data 错误:4:找不到与引用“ElementName=myWindow”进行绑定的源。绑定表达式:路径=我的命令;数据项=空;目标元素是'MenuItem'(名称='');目标属性是“命令”(输入“ICommand”)
为什么?我该如何解决这个问题?使用DataContext 不是一个选项,因为这个问题发生在可视化树的下方,其中 DataContext 已经包含正在显示的实际数据。我已经尝试改用{RelativeSource FindAncestor, ...},但这会产生类似的错误消息。
【问题讨论】:
-
+1 用于编辑您的解决方案,您应该将其作为单独的答案
标签: c# wpf data-binding xaml mvvm