我不确定如何使用RadCalendar命令来更新视图模型中的属性。我从Telreic找来了这个样本。
https://docs.telerik.com/devtools/universal-windows-platform/controls/radcalendar/commands/celltap
我按照所述创建了一个类:
public class CustomCellTapCommand : CalendarCommand
{
public CustomCellTapCommand()
{
Id = CommandId.CellTap;
}
public override bool CanExecute(object parameter)
{
CalendarCellTapContext ctx = parameter as CalendarCellTapContext;
var date = ctx.CellModel.Date;
if (date > DateTime.Now)
{
return false;
}
return true;
}
public override void Execute(object parameter)
{
CalendarCellModel context = parameter as CalendarCellModel;
}
}
这里是Xaml:
<Custom:RadCalendar.Commands>
<local:CustomCellTapCommand/>
</Custom:RadCalendar.Commands>
在我的自定义类中,可以将CanExecute和Execute方法称为ok。 如何在ViewModel中调用方法?
答案 0 :(得分:0)
这是我为Teleric UWP DataGrid实现CellTap命令的方式。我不知道这是否是正确的方法,如果不是,请告知:) 首先创建一个类,并将其命名为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>