まだヘルプを探しているかどうかはわかりませんが、ダイアログに関して私がとったアプローチは、ビューモデルがイベントを発生させ、ビューが処理できるようにすることです。ビューは、ビューモデルにデータを取得するために必要なことを何でも実行できるようになったため、問題なくビューにダイアログを表示できます。ダイアログからの応答をイベントの EventArgs に渡して、続行するために探しているデータがビュー モデルに含まれるようにします。
例えば:
Public Class View
Private WithEvents _VM AS new ViewModel()
Private Sub _VM_AddingItem(Sender AS Object, E AS ViewModel.ItemEventArgs)
Dim Dialog As new SomeDialog()
If Dialog.ShowDialog then
E.Item = Dialog.Item
Else
E.Cancel = True
End If
End Sub
End Class
Public Class ViewModel
Public Sub AddItem(Item AS Object)
Do Some Work here
End Sub
Private Sub _AddItem()
Dim Args AS New ItemEventArgs()
OnAddingItem(Args)
If not Args.Cancel Then AddItem(Args.Item)
End Sub
Protected Sub OnAddingItem()
RaiseEvent AddingItem(me, ItemEventArgs)
End Sub
Public Event AddingItem(Sender AS Object, E As ItemEventArgs)
Public Class ItemEventArgs
Public Property Item AS Object
Public Property Cancel AS Boolean = false
End Class
End Class
_AddItem
次に、メソッドに必要なデータを収集するイベントを発生させるプライベート メソッドにコマンドを接続しますAddItem
。これが役立つことを願っています:)