我正试图以这种方式绑定Button的上下文菜单:
<Button.ContextMenu>
<ContextMenu ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=Values}"/>
</Button.ContextMenu>
(UserControl具有Values属性)。
为什么这不起作用?
但是,当我将此绑定放入其他控件(如<TextBlock Text='{Binding ...}'/>
)时,它可以正常工作。
另一个问题,如何在WPF中调试绑定问题?
答案 0 :(得分:2)
它不起作用,因为ContextMenu不是可视树或逻辑树的一部分,因此它不会以与其他控件相同的方式继承DataContext
。它不是你控制的孩子。
您可以使用ContextMenu的PlacementTarget
属性来获取ContextMenu附加到的父元素并从那里开始。