Вот как я реализовал команду CellTap для Teleric UWP DataGrid.Я не знаю, если это правильный путь, пожалуйста, сообщите, если это не так :) Сначала создайте класс и назовите его CellTapCmd:
public class CellTapCmd: DataGridCommand
{
private Object _viewModel;
public Object viewModel
{
get { return _viewModel; }
set
{
_viewModel = value;
}
}
public CellTapCmd()
{
this.Id = CommandId.CellTap;
}
public override bool CanExecute(object parameter)
{
var context = parameter as DataGridCellInfo;
// put your custom logic here
return true;
}
public async override void Execute(object parameter)
{
var context = parameter as DataGridCellInfo;
// put your custom logic here
await ((IGridCommand)viewModel).CellTap(context);
}
}
Создайте интерфейс для вашей ViewModel для реализации:
interface IGridCommand
{
Task CellTap(DataGridCellInfo cellInfo);
}
Создать свою ViewModel:
public class AnyViewModel : ViewModelBase,IGridCommand
{
private DataGridCommand _cellTapCmd;
public DataGridCommand cellTapCmd
{
get { return _cellTapCmd; }
set
{
SetProperty(ref _cellTapCmd,value);
CellTapCmd cmd = (CellTapCmd)value;
cmd.viewModel = this;
}
}
public async Task CellTap(DataGridCellInfo cellInfo)
{
//do something amazing here
}
В вас xaml:
<telerik:RadDataGrid.Commands>
<gridCommands:DataGridUserCommand Command="{x:Bind Path=ViewModel.cellTapCmd, Mode=TwoWay}" Id="CellTap" />
</telerik:RadDataGrid.Commands>