ViewModelからViewのSaveメソッドを実行したい場合、Messenger.Raiseを使えばいいとわかったのですが、以下のコードでは通知が飛ばせません。
どこを修正、または追加すれば通知が飛ばせるようになるでしょうか?
どなたか分かる方がいれば教えていただきたいです。宜しくお願いします。
ViewModel
C#
1 #region SaveCommand 2 private ViewModelCommand _SaveCommand; 3 4 public ViewModelCommand SaveCommand 5 { 6 get 7 { 8 if (_SaveCommand == null) 9 { 10 _SaveCommand = new ViewModelCommand(Save); 11 } 12 return _SaveCommand; 13 } 14 } 15 16 public void Save() 17 { 18 Messenger.Raise(new TransitionMessage(new SignDialogViewModel(), "SaveMessageKey")); 19 } 20 #endregion
View
C#
1 private void Save() 2 { 3 // 保存処理 4 5 this.Close(); 6 }
XAML
1 <i:Interaction.Triggers> 2 3 <!--Viewに特別な要件が存在しない限りは、トリガーやアクションの自作にこだわらず積極的にコードビハインドを使いましょう --> 4 <!--Viewのコードビハインドは、基本的にView内で完結するロジックとViewModelからのイベントの受信(専用リスナを使用する)に限るとトラブルが少なくなります --> 5 <!--Livet1.1からはコードビハインドでViewModelのイベントを受信するためのWeakEventLisnterサポートが追加されています --> 6 7 <!--WindowのContentRenderedイベントのタイミングでViewModelのInitializeメソッドが呼ばれます--> 8 <i:EventTrigger EventName="ContentRendered"> 9 <l:LivetCallMethodAction MethodTarget="{Binding}" MethodName="Initialize"/> 10 </i:EventTrigger> 11 12 <!--Windowが閉じたタイミングでViewModelのDisposeメソッドが呼ばれます--> 13 <i:EventTrigger EventName="Closed"> 14 <l:DataContextDisposeAction/> 15 </i:EventTrigger> 16 17 <!--WindowのCloseキャンセル処理に対応する場合は、WindowCloseCancelBehaviorの使用を検討してください--> 18 19 <l:InteractionMessageTrigger MessageKey="SaveMessageKey" Messenger="{Binding Messenger}"> 20 <l:TransitionInteractionMessageAction/> 21 </l:InteractionMessageTrigger> 22 23 </i:Interaction.Triggers> 24 25 <Grid> 26 <InkCanvas Name="SignCanvas" Width="auto" Height="auto" /> 27 <StackPanel 28 Orientation="Horizontal" 29 HorizontalAlignment="Right"> 30 <Button VerticalAlignment="Top" Margin="10" Width="50" Height="30" Content="Save" Command="{Binding SaveCommand}" /> 31 </StackPanel>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/05 00:58
2017/07/06 01:30
2017/07/06 02:22