2

我是 WPF 的新手,本着尝试以正确方式做事的精神,我尝试在我的应用程序中实现 MVVM。我使用了 Josh Smith 经常提到的文章,除了让我意识到我知道的有多么少之外,它让我有点难过。

具体来说,我有一个使用 RelayCommand 对象直接在页面上处理按钮的页面,这很好。但是,按钮(保存)最终将位于还包含其他按钮的用户控件上,并且该控件将在多个页面上使用。

我的问题是这个;如何将命令从用户控件传递到包含它的页面(即视图模型)?如果我绑定到命令

public ICommand SaveCommand
{
  get
  {
    if (_saveCommand == null)
    {
      _saveCommand = new RelayCommand(
          param => this.Save(),
          param => this.CanSave
          );
    }
    return _saveCommand;
  }
}

在用户控件上,我需要在用户控件本身上使用 Save 方法,而实际上我应该在视图模型上处理它。

任何人都可以帮忙吗?

4

2 回答 2

0

那么,你需要绑定到父的(页面)DataContext(视图模型)吗?尝试使用 RelativeSource 绑定到 SaveCommand:http: //msdn.microsoft.com/en-us/library/ms743599.aspx

于 2010-04-06T23:24:54.287 回答
0

尝试探索这一点。它将在绑定和中继命令方面为您提供很多帮助。

有了您的关注,您需要绑定用户控件的数据上下文。如果您要为保存命令使用按钮。试试这个:

<Grid x:Name="LayoutRoot" DataContext="{ yourViewModelHere }">
      <Button x:Name="btnSave" Command="{Binding SaveCommand}"/>
</Grid>
于 2010-04-07T03:20:11.537 回答