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 のノードが右クリックされるとコンテキストメニューが表示されます。

Tagged:

製品について

Ultimate UI for WPF