2013-06-25 56 views
0

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

回答

2
if(command.CanExecute(parameter)) 
    command.Execute(parameter); 
+0

如果该命令是在ViewModel中定义的DelegateCommand,并且我试图在视图中触发该命令,那么在您的示例中,“command”是什么? –

+1

您可以将命令分配给视图模型的DelegateCommand。或者只是做一些事情:'myViewModel.MyCommand.Execute(null);'。请参阅 - http://msdn.microsoft.com/en-us/library/ff654130.aspx –

1

如果您想要在代码后面放置调用命令,您可以执行Aron建议的操作。

如果您不喜欢背后的代码,或者很难将代码隐藏起来,比如DataTemplate,您应该考虑触发命令的条件。如果你的命令是由某个事件触发的,你可以像下面那样使用Prism,你也可以选择一些其他的在Prism中建立的触发器或者自己写触发器。

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

如果您有更复杂的逻辑,您可以使用ICommand DependencyProperty编写行为。将您的ViewModel命令绑定到DependencyProperty并在您的行为中使用它。