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
.
公开
正在尝试将文本文件从 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
.