如何绑定WPF ContextMenu ItemsSource?

时间:2012-10-29 17:14:10

标签: .net wpf xaml data-binding itemssource

我正试图以这种方式绑定Button的上下文菜单:

<Button.ContextMenu>
    <ContextMenu ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=Values}"/>
</Button.ContextMenu>

(UserControl具有Values属性)。

为什么这不起作用? 但是,当我将此绑定放入其他控件(如<TextBlock Text='{Binding ...}'/>)时,它可以正常工作。

另一个问题,如何在WPF中调试绑定问题?

1 个答案:

答案 0 :(得分:2)

它不起作用,因为ContextMenu不是可视树或逻辑树的一部分,因此它不会以与其他控件相同的方式继承DataContext。它不是你控制的孩子。

您可以使用ContextMenu的PlacementTarget属性来获取ContextMenu附加到的父元素并从那里开始。