代码之家  ›  专栏  ›  技术社区  ›  Mark Pearl

MVVM模式-如何在代码隐藏中触发ICommand或CommandReference

  •  5
  • Mark Pearl  · 技术社区  · 16 年前

    我一直在寻找这个栈溢出,但还没有找到答案,所以我希望这不是一个重复的…

    我有一个使用MVVM模式的应用程序,我喜欢保持东西干净,但有时一些代码背后似乎比XAML解决方案更干净。

    我想知道是否可以从代码隐藏中触发命令。

    我已经在视图中设置了一个命令引用(见下文)

    <local:CommandReference 
                     x:Key="CommandReferencePreviewReportsCommand" 
                     Command="{Binding PreviewReportsCommand}" />
    

    我要做的是能够从视图后面的C代码中触发命令引用或ICommand。有人知道怎么做吗?

    3 回复  |  直到 16 年前
        1
  •  6
  •   Mark Seemann    16 年前

    您只需从后面的代码调用命令:

    var parameter = null; // can also be any object you'd like to use as a parameter
    this.PreviewReportsCommand.Execute(parameter);
    
        2
  •  4
  •   Mark Pearl    16 年前

    可以。。。马克·西曼-你让我走上正轨…所以我增加了你的投票…

    我没有意识到数据上下文可以是类型转换,这将使ViewModel中的命令可见…所以下面的代码适用于我的情况。一般的解决方案是类似的。

    ((ViewModel.PrintSelectViewModel) this.DataContext).PreviewReportsCommand.Execute(null);
    
        3
  •  1
  •   msfanboy    16 年前