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

时间:2013-08-22 13:44:54

标签: c# wpf mvvm

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

<Button Click="?"/>

我不想在我的视图中生成一个方法只是为了调用另一个方法(除非我必须)。

由于

1 个答案:

答案 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>