0

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

<Button Click="?"/>

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

谢谢

4

1 回答 1

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

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

<Button Command="{Binding ButtonClick}">Action</Button>
于 2013-08-22T14:03:10.817 回答