XamDataTree のノードが右クリックされた際にカスタムのコンテキストメニューを表示するには、XamDataTreeNodeControl スタイルに対して ContextMenuService.Manager 添付プロパティを設定し、ContextMenuManager の中で、実際に表示するメニュー( XamContextMenu )を定義します。
<Style TargetType="{x:Type ig:XamDataTreeNodeControl}">
<Setter Property="ig:ContextMenuService.Manager">
<Setter.Value>
<ig:ContextMenuManager>
<ig:ContextMenuManager.ContextMenu>
<ig:XamContextMenu>
<ig:XamMenuItem
Header="Menu 1"
Command="{Binding Path=Node.NodeLayout.Tree.DataContext.MyCommand1}"
CommandParameter="{Binding Path=Node}" />
</ig:XamContextMenu>
</ig:ContextMenuManager.ContextMenu>
</ig:ContextMenuManager>
</Setter.Value>
</Setter>
</Style>
併せて、XamDataTree の PreviewMouseRightButtonDown イベントで右クリックされたノードをアクティブ化および選択状態としておくと、コンテキストメニューが表示されているノードをハイライトすることができます。
private void xamDataTree1_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
var node = Utilities.GetAncestorFromType(e.OriginalSource as DependencyObject, typeof(XamDataTreeNodeControl), false) as XamDataTreeNodeControl;
if (node != null)
{
node.Node.IsActive = true;
node.Node.IsSelected = true;
}
}
XamDataTree のノードが右クリックされるとコンテキストメニューが表示されます。
