使用Click Event WPF启动控制器方法

本文关键字:控制器 方法 启动 WPF Click Event 使用 | 更新日期: 2023-09-27 18:28:42

我想知道如何从视图中的"点击"事件按钮直接调用控制器的方法,而不在视图中放入代码

<Button Click="?"/>

我不想在我的视图中生成一个方法来调用另一个方法(除非我必须这样做)。

感谢

使用Click Event WPF启动控制器方法

命令是这个问题的常见答案。不幸的是,它需要一个小样板才能开始,这里有一个非常简单的例子:

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);
    }
}

如果愿意,除了返回true之外,还可以向CanExecute中添加更多逻辑,然后可以将MyCommand类重新用于UI中正在执行的任何其他命令。要绑定你的按钮,你只需要简单地写:

<Button Command="{Binding ButtonClick}">Action</Button>