0

この方法でボタンのコンテキスト メニューをバインドしようとしています。

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

(UserControl には Values プロパティがあります)。

なぜこれが機能しないのですか?ただし、このバインディングを他のコントロールに配置すると、正常<TextBlock Text='{Binding ...}'/>に動作します。

別の質問ですが、WPF でバインドの問題をデバッグするにはどうすればよいですか?

4

1 に答える 1

2

ContextMenuは視覚的または論理的なツリーの一部ではないため、機能しません。したがってDataContext、他のコントロールと同じように継承することはありません。それはあなたのコントロールの子ではありません。

できることは、ContextMenuのPlacementTargetプロパティを使用して、ContextMenuがアタッチされている親要素を取得し、そこから移動することです。

于 2012-10-29T17:23:21.813 に答える