我是MVVM模式的新手,我正在尝试编写自己的自定义命令。编写自定义命令的最佳方法是什么? (我在这里和那里阅读了很多文章,但无法获得创建命令的想法)。特别是如果有人可以帮助我创建命令的想法,单击一个按钮从一个ListView获取项目并将它们放在另一个ListView中。 (列表视图以ObservableCollection为界)。提前谢谢!
答案 0 :(得分:0)
您只需要实现ICommand
界面。大多数MVVM框架都有一个基于委托的通用命令类来实现它(例如MVVM中的RelayCommand
)。您只需将方法传递给它们的构造函数。
答案 1 :(得分:0)
只需实现ICommand接口即可。网上有很多,甚至在nuget包中实现。使用ICommand搜索RelayCommand或DelegateCommand,您会发现许多实现。完成之后,只需将VMs私有方法包装在命令中即可。 e.g。
ICommand startTestCommand;
public ICommand StartTestCommand { get { return startTestCommand ?? (startTestCommand = new RelayCommand(StartTest)); }
private void StartTest()
{
//This will execute if the Command is bound in XAML
}
要在XAML中绑定命令(假设您的视图模型是数据上下文),只需将按钮的Command属性绑定到“StartTestCommand”或任何调用命令。
因此,从本质上讲,您不会为您所要求的内容“创建自己的命令”,而是将委托包装为Command调解器以处理阻止耦合。有理由创建自己的命令,但我建议使用那里的命令。