2013-06-25 75 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並在您的行爲中使用它。