我想知道如何在我的视图中从“点击”事件按钮直接调用我的控制器的方法而不在我的视图中放置代码
<Button Click="?"/>
我不想在我的视图中生成一个方法只是为了调用另一个方法(除非我必须)。
由于
答案 0 :(得分:1)
命令是解决此问题的常用方法。不幸的是,它需要一些样板才能开始,这是一个非常简单的例子:
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);
}
}
您可以在CanExecute
中添加更多逻辑,如果您愿意,则返回true,然后您可以将MyCommand
类重用于您在UI中进行的任何其他命令。要绑定您的按钮,您只需简单地写:
<Button Command="{Binding ButtonClick}">Action</Button>