Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TreeView.MouseRightButtonUp事件触发SelectedItemChanged问题XAML_C#_Wpf_Xaml_Treeview_Dependency Properties - Fatal编程技术网

C# TreeView.MouseRightButtonUp事件触发SelectedItemChanged问题XAML

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

我有一个自定义的treeview助手,它正在启动iCommand,我想知道是否有人可以查看我的代码并帮助我识别问题

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。我已经实现了。但这不是我想要的解决方案。这个解决方案很庞大。