【发布时间】:2015-03-12 18:59:29
【问题描述】:
我有以下场景:
public class MyCommand : ICommand
{
MyViewModel _viewModel;
public MyCommand(MyViewModel viewModel)
{
_viewModel = viewModel;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_viewModel.SomeMethod();
}
}
本质上,当单击按钮时,此命令将简单地调用我的 ViewModel 中的方法。 CanExecute 总是返回 true。
问题在于,尽管这通常被认为是最好的做事方式,但它并不是很优雅。它引出了一个问题,为什么我需要一个命令来完成这个非常简单的过程。
为什么不能跳过命令,直接调用方法?
我已经考虑过这一点,我认为实现这一点的唯一方法是创建一个命令,我可以在其中指定要在 CommandParameter中调用的方法名称> 我的按钮上的属性。
我希望其他人可以为这个问题提供一个优雅的解决方案。
【问题讨论】:
-
1) 这不是最好的处理方式 2) 您可以直接调用该方法,但您必须跳过 UI 中的白痴圈才能做到这一点,这比使用更昂贵ICommand 模式。
-
您还将逻辑拆分为两部分,即
View和ViewModel,如果有人愿意来维护此代码,他们将不得不在两个地方而不是一个地方查看,即ViewModel.