C# TreeView.MouseRightButtonUp事件触发SelectedItemChanged问题XAML
我有一个自定义的treeview助手,它正在启动iCommand,我想知道是否有人可以查看我的代码并帮助我识别问题C# TreeView.MouseRightButtonUp事件触发SelectedItemChanged问题XAML,c#,wpf,xaml,treeview,dependency-properties,C#,Wpf,Xaml,Treeview,Dependency Properties,我有一个自定义的treeview助手,它正在启动iCommand,我想知道是否有人可以查看我的代码并帮助我识别问题 private static void PreviewMouseRightButtonDownChanged(DependencyObject obj, DependencyPropertyChangedEventArgs dpe) { if (!(obj is TreeView)) return; var view
private static void PreviewMouseRightButtonDownChanged(DependencyObject obj, DependencyPropertyChangedEventArgs dpe)
{
if (!(obj is TreeView))
return;
var view = obj as TreeView;
view.SelectedItemChanged += (sender, e) => SetSelectedItem(view, e.NewValue);
view.MouseRightButtonUp += (sender, e) => SetSelectedItem(view, e.Source );
var command = (ICommand)(view as DependencyObject).GetValue(PreviewMouseRightButtonDownProperty);
if (command != null)
{
if (command.CanExecute(null))
command.Execute(new DependencyPropertyEventArgs(dpe));
}
}
我的问题是,我想在触发事件MouseRightButtonUp时将e.NewValue传递给SetSelectedItem。在上面的函数中,您可以看到它正在传递“view”和“e.Source”。我不希望它传递e.Source,而是希望它传递e.NewValue。SelectedItemChanged事件接收2个参数(对象发送者,RoutedPropertyChangedEventArgs e),而MouseRightButtonUp事件接收(对象,MouseButtoneEventArgs)MouseButtonEventArgs不像RoutedPropertyChangedVentargs那样保存NewValue的值。我正在寻找一种方法来提取NewValue变量,并将其从MouseRightButtonUp传递到SetSelectedItem。这不是一个错误问题这是一个逻辑问题SetSelectedItem仅在单个项目上传递true或false。我已经实现了。但这不是我想要的解决方案。这个解决方案很庞大。