DataGrid & 鼠标事件作为参数

DataGrid & Mouse Event as parameters

正在尝试将文本文件从 WPF DataGrid 拖放到 notepad/excel。 我正在尝试在 MainViewModel 中使用此代码:

    private void FileDragDrop(object sender, MouseEventArgs e)
    {
        try
        {
            Process.Start(Path.Combine(ResultSnapshotFolder, cell));
            if (e.MiddleButton != MouseButtonState.Pressed) return;
            var d = new DataObject();
            d.SetData(DataFormats.Serializable, SelectedRow);
            d.SetData(DataFormats.Text, SelectedRow.ToString());
            DragDrop.DoDragDrop(grid, d, DragDropEffects.Copy);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

XAML 鼠标绑定:

     <MouseBinding
                MouseAction="MiddleClick"
                Command="{Binding FileDragDrop}"
                CommandParameter="{Binding ElementName=FileGrid }" />

下面是重载的 DelegateCommand,用于不同的鼠标操作:

     public void Execute(object parameter)
    {
        _execute(parameter);
    }

    public void Execute(object parameter, MouseEventArgs argsMouse)
    {
        _dataGridDragDrop(parameter, argsMouse);
    }

我的问题是 "Execute(object parameter)" 总是在 运行 时间执行,就好像 "MouseEventArgs argsMouse" 从未从 XAML 视图传递到 MainViewModel 一样DataGrid 对象。

基本上,当我想 运行 具有 2 个参数的方法时,我只能 运行 具有 1 个参数的方法。

有没有人知道解决这个问题的方法或可以解决这个问题的不同方法?

如果您只想获取按下鼠标按钮的信息,则不需要 MouseEventArgs

改变一下

if (e.MiddleButton != MouseButtonState.Pressed) return;

if (Mouse.MiddleButton != MouseButtonState.Pressed) return;

你应该可以开始了。

事实上几乎所有由 MouseEventArgs 公开的属性和方法也由静态 class Mouse.

公开