绑定按钮命令(的Windows Phone 7.5)(Bind a button to a comm

2019-07-31 06:37发布

我的工作在我的Windows手机应用程序使用至极一些简单的数据绑定。 我媒体链接创建了一个应用程序至极是基于MVVM编程method.The应用程序,我正在curently工作还工作原理是MVVM方法。 因为我要保持我的身后,干净的代码尽可能我一直在寻找一种方法来使“按钮单击事件”(至极normaly发生在代码隐藏页)发生在我的视图模型或mainviewmodel。

我已经搜索需要的ICommand接口的简单解释互联网,因为我相信这就是要走的路。 与我找到了解释的问题是,他们中的一些是基于使用CommandRelay功能MvvMlight工具包。 我不想使用MVVM光工具包,因为我想先了解自己的东西。 其他教程,我发现超过enthousiastic开发者编写至极给你的信息矫枉过正。

所以basicly。 有人能告诉我一个ICommand的是最简单的绑定到一个按钮的作品?

Answer 1:

在您的XAML:

<Button Content="My Button" Command="{Binding MyViewModelCommand}" />

在您的视图模型:

public class MyViewModel
{

    public MyViewModel()
    {
        MyViewModelCommand = new ActionCommand(DoSomething);
    }

    public ICommand MyViewModelCommand { get; private set; }

    private void DoSomething()
    {
        // no, seriously, do something here
    }
}

INotifyPropertyChanged和其他视图模型寒暄省略。
构建您的视图模型的命令的另一种方式显示在此答案的底部。

现在,你需要的实现ICommand 。 我建议先从简单的东西就是这样,和扩展或实现其他功能如必要/命令:

public class ActionCommand : ICommand
{
    private readonly Action _action;

    public ActionCommand(Action action)
    {
        _action = action;
    }

    public void Execute(object parameter)
    {
        _action();
    }

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public event EventHandler CanExecuteChanged;
}

这里是布局视图模型的另一种方式:

public class MyViewModel
{
    private ICommand _myViewModelCommand;
    public ICommand MyViewModelCommand
    {
        get 
        {
            return _myViewModelCommand
                ?? (_myViewModelCommand = new ActionCommand(() => 
                {
                    // your code here
                }));
        }
    }
}


Answer 2:

要添加到蓝鸟答案:

我的所有时间最喜欢的是从模式与实践团队@微软DelegateCommand。 看看这篇文章的更多信息。



文章来源: Bind a button to a command (Windows Phone 7.5)