Der Versuch, Drag & Drop von Textdateien von einem WPF DataGrid nach Notepad/Excel zu programmieren. Ich versuche, diesen Code in MainViewModel zu verwenden:DataGrid & Mouse Event als Parameter
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 }" />
Im Folgenden finden Sie die überladene DelegateCommand, für verschiedene Mausaktionen:
public void Execute(object parameter)
{
_execute(parameter);
}
public void Execute(object parameter, MouseEventArgs argsMouse)
{
_dataGridDragDrop(parameter, argsMouse);
}
Mein Problem ist, dass "Execute (Objektparameter)" wird immer zur Laufzeit ausgeführt, als ob die "MouseEventArgs argsMouse" niemals von der XAML-Ansicht an das MainViewModel mit dem Da übergeben wird taGrid-Objekt.
Grundsätzlich kann ich nur Methoden mit 1 Parameter ausführen, wenn ich eine Methode mit 2 Parametern ausführen möchte.
Kennt jemand einen Weg um diesen oder einen anderen Ansatz, der das Problem lösen könnte?
Sie können weitere Parameter mit einem MultiBinding Converter hinzufügen, andernfalls müssen Sie ein AttachedBehavior implementieren –
'ICommand' hat keine' Execute (object, MouseEventArgs) 'Methode. 'MouseBinding' hat einen' ICommand'. Es ruft die 'Execute (object)' Methode auf, die 'ICommand' hat. Es ist nicht so schlau wie du gehofft hast. –
Ich würde sagen, das liegt daran, dass MouseEventArgs kein ViewModel-Objekt ist: Es gehört zur View –