我的工作在我的Windows手机应用程序使用至极一些简单的数据绑定。 我媒体链接创建了一个应用程序至极是基于MVVM编程method.The应用程序,我正在curently工作还工作原理是MVVM方法。 因为我要保持我的身后,干净的代码尽可能我一直在寻找一种方法来使“按钮单击事件”(至极normaly发生在代码隐藏页)发生在我的视图模型或mainviewmodel。
我已经搜索需要的ICommand接口的简单解释互联网,因为我相信这就是要走的路。 与我找到了解释的问题是,他们中的一些是基于使用CommandRelay功能MvvMlight工具包。 我不想使用MVVM光工具包,因为我想先了解自己的东西。 其他教程,我发现超过enthousiastic开发者编写至极给你的信息矫枉过正。
所以basicly。 有人能告诉我一个ICommand的是最简单的绑定到一个按钮的作品?
在您的XAML:
<Button Content="My Button" Command="{Binding MyViewModelCommand}" />
在您的视图模型:
public class MyViewModel
{
public MyViewModel()
{
MyViewModelCommand = new ActionCommand(DoSomething);
}
public ICommand MyViewModelCommand { get; private set; }
private void DoSomething()
{
// no, seriously, do something here
}
}
INotifyPropertyChanged
和其他视图模型寒暄省略。
构建您的视图模型的命令的另一种方式显示在此答案的底部。
现在,你需要的实现ICommand
。 我建议先从简单的东西就是这样,和扩展或实现其他功能如必要/命令:
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;
}
这里是布局视图模型的另一种方式:
public class MyViewModel
{
private ICommand _myViewModelCommand;
public ICommand MyViewModelCommand
{
get
{
return _myViewModelCommand
?? (_myViewModelCommand = new ActionCommand(() =>
{
// your code here
}));
}
}
}
要添加到蓝鸟答案:
我的所有时间最喜欢的是从模式与实践团队@微软DelegateCommand。 看看这篇文章的更多信息。