Возможно ли таким образом через двойной клик отправить DataGridRow?
Код представления:
...
можель представления:
private ICommand rowDoubleClick;
public ICommand RowDoubleClick
{
get
{
return rowDoubleClick
?? (rowDoubleClick= new ActionCommand(() =>
{
// I need the selected row here
MessageBox.Show("asd");
}));
}
}
Реализация ActionCommand класса
public class ActionCommand : ICommand
{
private readonly Action _action;
public ActionCommand(Action action)
{
_action = action;
}
public void Execute(object parameter)
{
_action();
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
}
Киньте пожалуйста код представления, для полной картины, так сказать...
Виноват.
DataGrid ItemsSource="{Binding Consignments}"
x:Name="dataGridConsignments"
Margin="10,47,10,9.6"
IsReadOnly="True" ColumnWidth="*" AutoGenerateColumns="False"
xmlnsataGridDoubleClickCommand="{Binding DataGridDoubleClick}"
DataGrid.InputBindings
MouseBinding Gesture="LeftDoubleClick" Command="{Binding RowDoubleClick}"/
/DataGrid.InputBindings
Используйте просто CommandParameter.
MouseBinding Gesture="LeftDoubleClick" Command="{Binding RowDoubleClick}"
CommandParameter="{Binding ElementName=dataGridConsignments, Path=SelectedItem}"/
данный вариант требует предварительной реализации интерфейса ICommand, что-то типа того, что ваш Action принимает как параметр. Также можете глянуть стандартную реализацию и пользу "RelayCommand" ЗДЕСЬ. Это очень похоже на то что вы делали через ActionCommand.
Как вариант также можно упростить байнд SelectedItem к свойству в вашей модели в представлении и использовать это в случае особой запары
DataGrid ItemsSource="{Binding Consignments}" SelectedItem="{Binding VMSelectedItem}" .../