亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

WPFのMenuはVisual Treeが違う

WPFのMenuはVisualTreeが違うことを今さらながら実感。
コントロールのContextMenuの中だと、普通にバインドしても全然繋がらない。

<Button Text="{Binding Title, ElementName=Window}">  <--OK-->
   <Button.ContextMenu>  
      <MenuItem Header="{Binding Title, ElementName=Window}" />  <--ダメ-->
   </Button.ContextMenu>
</Button>

調べると、MSDNで引っかかった。


NavigationWindow ControlTemplate の例

サンプルコードによると、TemplatedParentで取れるっぽい。ので。

<Button Text="{Binding Title, ElementName=Window}">  <--OK-->
   <Button.ContextMenu>  
      <MenuItem Header="{Binding Title, RelativeSource={RelativeSource TemplatedParent}, ElementName=Window}" />  <--OK-->
   </Button.ContextMenu>
</Button>


あんまりやる人少ないのかなあ。結構はまった.