【问题标题】:Fire Prism Commands Manually手动火棱镜命令
【发布时间】:2013-06-25 01:49:13
【问题描述】:

我已经使用 Prism 设置了一个 Windows 商店应用程序。我需要使用命令来通知视图模型一个动作,但在这种情况下我不能使用按钮。有没有办法从视图中触发在视图模型中定义的命令,但是以不可知的方式,以便视图/视图模型不紧密耦合?

【问题讨论】:

    标签: c# .net command windows-store-apps prism


    【解决方案1】:
    if(command.CanExecute(parameter))
        command.Execute(parameter);
    

    【讨论】:

    • 如果命令是 ViewModel 中定义的 DelegateCommand,并且我试图在视图中触发命令,那么“命令”是什么,在您的示例中是对的引用?
    • 您可以将命令分配给视图模型的 DelegateCommand。或者只是做类似的事情:myViewModel.MyCommand.Execute(null);。见 - msdn.microsoft.com/en-us/library/ff654130.aspx
    【解决方案2】:

    如果你想把调用命令放在代码后面,你可以按照 Aron 的建议去做。

    如果你不喜欢后面的代码或者很难有后面的代码,比如DataTemplate,你应该考虑什么条件触发命令。如果你的命令是由某个事件触发的,你可以像下面这样使用Prism,你也可以选择Prism内置的一些其他触发器或自己编写触发器。

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="FrameworkElement.Loaded">
            <i:InvokeCommandAction Command="{Binding LoadCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
    

    如果你有更复杂的逻辑,你可以写一个带有 ICommand DependencyProperty 的 Behavior。将您在 ViewModel 上的命令绑定到 DependencyProperty 并在您的 Behavior 中使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2012-05-18
      • 1970-01-01
      相关资源
      最近更新 更多