Hou*_*man 8 .net wpf mvvm relaycommand mvvm-light
我想知道我是否可以像这样在我的ViewModel上创建一个RelayCommand:
public RelayCommand<IList<VectorViewModel>> MyCommand { get; set; }
Run Code Online (Sandbox Code Playgroud)
构造函数:
MyCommand = new RelayCommand<IList<VectorViewModel>>(DoSomething);
Run Code Online (Sandbox Code Playgroud)
从XAML背后的代码中,我从DataGrid中获取所选行并将它们放入List中.
if (xamDatagridVector.SelectedItems.Records.Count >= 3)
{
var list = new List<VectorViewModel>();
foreach (DataRecord record in xamDatagridVector.SelectedItems.Records)
{
list.Add((VectorViewModel)record.DataItem);
}
}
Run Code Online (Sandbox Code Playgroud)
在这个阶段,我想通过使用我之前创建的RelayCommand将List发送回ViewModel.是否可以在代码中创建一个RelayCommand并将其绑定到ViewModel的命令并将其关闭?
有什么替代方式?我当然可以在MVVM-Light中使用弱引用的Messenger类,但是我不喜欢的是它会将它发送给该调用的所有订阅者,而不仅仅是底层的ViewModel(当你有几个时它使用Messenger是致命的TabControls中相同View的实例)
我希望有人有想法让我继续前进,非常感谢,Kave
Tho*_*que 18
Execute检查结果后,只需调用命令的方法CanExecute:
var viewModel = (MyViewModel)DataContext;
if (viewModel.MyCommand.CanExecute(list))
viewModel.MyCommand.Execute(list);
Run Code Online (Sandbox Code Playgroud)