WPF MVVM:ICommand绑定到控件

我完全失去了MVVM中使用的命令绑定。 我应该如何将我的对象绑定到窗口和/或它的控制命令来获取Button Click调用的方法?

这是一个CustomerViewModel类:

public class CustomerViewModel : ViewModelBase
{
    RelayCommand _saveCommand;
    public ICommand SaveCommand
    {
        get
        {
            if (_saveCommand == null)
            {
                _saveCommand = new RelayCommand(param => this.Save(), param => this.CanSave);
                NotifyPropertyChanged("SaveCommand");
            }
            return _saveCommand;
        }
    }

    public void Save()
    {
        ...
    }

    public bool CanSave { get { return true; } }

    ...

ViewModelBase实现INotifyPropertyChanged接口以下是Button如何绑定到命令:

<Button Content="Save" Margin="3" Command="{Binding DataContext.Save}" />

CustomerViewModel一个实例被分配给包含Button的窗口的DataContext

给出的示例不起作用:我已将断点放入Save方法,但执行不会传递给方法。 我已经看到了很多例子(在stackoverflow上),但无法弄清楚应该如何指定绑定。

请指教,任何帮助将不胜感激。

谢谢。

PS可能我需要在Button绑定中指定RelativeSource ...就像这样:

 Command="{Binding Path=DataContext.Save, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"

但是应该为祖先指定哪种类型?


你要做的是直接绑定到Save方法。 这不是如何去做。

假设您已将View的DataContext设置为CustomerViewModel的一个实例,那么您将如何绑定到SaveCommand:

<Button Content="Save" Margin="3" Command="{Binding SaveCommand}" />

您不必调用NotifyPropertyChanged("SaveCommand");

链接地址: http://www.djcxy.com/p/56159.html

上一篇: WPF MVVM: ICommand Binding to controls

下一篇: WPF ICommand vs RoutedCommand