尝试将文本文件从WPF DataGrid拖放到记事本/ 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:
<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视图传递到带有DataGrid对象的MainViewModel。
基本上我只能在运行带有2个参数的方法时运行带有1个参数的方法。
有没有人知道解决这个问题的方法或不同的方法?
答案 0 :(得分:1)
如果您只想获取按下鼠标按钮的信息,那么您就不需要MouseEventArgs
。
只需更改
if (e.MiddleButton != MouseButtonState.Pressed) return;
到
if (Mouse.MiddleButton != MouseButtonState.Pressed) return;
你应该好好去。
事实上,MouseEventArgs
公开的几乎所有属性和方法也都是由静态类Mouse
公开的。