【发布时间】:2013-06-25 01:49:13
【问题描述】:
我已经使用 Prism 设置了一个 Windows 商店应用程序。我需要使用命令来通知视图模型一个动作,但在这种情况下我不能使用按钮。有没有办法从视图中触发在视图模型中定义的命令,但是以不可知的方式,以便视图/视图模型不紧密耦合?
【问题讨论】:
标签: c# .net command windows-store-apps prism
我已经使用 Prism 设置了一个 Windows 商店应用程序。我需要使用命令来通知视图模型一个动作,但在这种情况下我不能使用按钮。有没有办法从视图中触发在视图模型中定义的命令,但是以不可知的方式,以便视图/视图模型不紧密耦合?
【问题讨论】:
标签: c# .net command windows-store-apps prism
if(command.CanExecute(parameter))
command.Execute(parameter);
【讨论】:
myViewModel.MyCommand.Execute(null);。见 - msdn.microsoft.com/en-us/library/ff654130.aspx
如果你想把调用命令放在代码后面,你可以按照 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 中使用它。
【讨论】: