WPF用户控件中的RelayCommand

3
我对WPF很陌生,为了按正确的方式尝试实现MVVM,我在我的应用程序中使用了它。除了让我意识到自己知道很少之外,我还感到有些困惑。具体来说,我有一个页面,它使用RelayCommand对象直接处理页面上的按钮,这很好。但是,该按钮(保存)最终将位于用户控件上,该控件还将包含其他按钮,并且该控件将用于多个页面。我的问题是:我如何将命令从用户控件传递到包含它的页面(即视图模型)?如果我绑定到命令
public ICommand SaveCommand
{
  get
  {
    if (_saveCommand == null)
    {
      _saveCommand = new RelayCommand(
          param => this.Save(),
          param => this.CanSave
          );
    }
    return _saveCommand;
  }
}

在用户控件上,我需要在用户控件本身上使用一个保存方法,而事实上我应该在视图模型中处理它。

有人能帮忙吗?

2个回答

0

如果有人感兴趣,可以这样做:Command="{Binding SaveCommand}" CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" - pilsdumps

0

尝试探索一下这个。它将在绑定和中继命令方面对您有很大帮助。

根据您的关注,您需要绑定用户控件的数据上下文。如果您要使用按钮进行保存命令,请尝试以下操作:

<Grid x:Name="LayoutRoot" DataContext="{ yourViewModelHere }">
      <Button x:Name="btnSave" Command="{Binding SaveCommand}"/>
</Grid>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接