我想知道如何从视图中的“单击”事件按钮直接调用控制器的方法,而无需在视图中放置代码
<Button Click="?"/>
我不想在我的视图中生成一个方法只是为了调用另一个方法(除非我必须这样做)。
谢谢
命令是这个问题的通常答案。不幸的是,它需要一些样板才能开始,这是一个非常简单的例子:
public class MyViewModel
{
public MyCommand ButtonClick { get; set; }
public MyViewModel()
{
ButtonClick = new MyCommand();
ButtonClick.CanExecuteFunc = ButtonClickCanExecute;
ButtonClick.ExecuteFunc = ButtonClickFunc;
}
public bool ButtonClickCanExecute(object parameter)
{
return true;
}
public void ButtonClickFunc(object parameter)
{
// Do stuff here
}
}
public class MyCommand : ICommand
{
public event EventHandler CanExecuteChanged;
public Predicate<object> CanExecuteFunc { get; set; }
public Action<object> ExecuteFunc { get; set; }
public bool CanExecute(object parameter)
{
return CanExecuteFunc(parameter);
}
public void Execute(object parameter)
{
ExecuteFunc(parameter);
}
}
如果您愿意,您可以在除了 return true 之外添加更多逻辑CanExecute
,然后您可以将该MyCommand
类重用于您在 UI 中执行的任何其他命令。要绑定您的按钮,您只需要简单地编写:
<Button Command="{Binding ButtonClick}">Action</Button>