树节点鼠标右击选中处理
public static bool GetIsRightClickSelect(DependencyObject obj)
{
return (bool)obj.GetValue(IsRightClickSelectProperty);
}
public static bool SetIsRightClickSelect(DependencyObject obj,bool value)
{
obj.SetValue(IsRightClickSelectProperty,value);
}
public static readonly DependencyProperty IsRightClickSelectProperty = DependcyProperty.RegisterAttached("IsRightClickSelect",typeof(bool),typeof(TreeViewItemAttach),new FrameworkPropertyMetadata(false,FrameworkPropertyMetadataOptions.Inherits,IsRightClickSelectChanged));
private static void IsRightClickSelectChanged(DependencyObject d,DependencyPropertyChangedEventArgs e)
{
TreeView treeView = (d as TreeView);
if(treeView == null)
{
return;
}
if((bool)e.NewValue)
{
treeview.PreviewMouseRightButtonDown += treeView_PreviewMouseRightButtonDown;
}
else
{
treeview.PreviewMouseRightButtonDown -= treewiew_PreviewMouseRightButtonDown;
}
}
private static void treeview_PrevireMouseRightButtonDown(object sender,MouseButtonEventArgs e)
{
TreViewItem item = VisualTreeSearch.FindVisualParent<TreeViewItem>(e.OriginalSource as DependencyObject,sender as DependcyObject);
if(item !=null )
{
item.Focus();
item.IsSelected = true;
e.Handled = true;
}
}