それはどのように可能ですか?アイデアは、ポップアップ/子ウィンドウ内のフォームに情報を入力し、それを保存/閉じると、ポップアップが最初に開かれた「親」ウィンドウを自動的に更新することです。
親切に提案、
ありがとう
それはどのように可能ですか?アイデアは、ポップアップ/子ウィンドウ内のフォームに情報を入力し、それを保存/閉じると、ポップアップが最初に開かれた「親」ウィンドウを自動的に更新することです。
親切に提案、
ありがとう
これは、MVVM Light で Messenger クラスを使用する完全な理由です。メイン ビュー モデルに更新コマンドを送信する NotificationMessage を作成します。
public MainWindowViewModel()
{
if ((IsInDesignMode))
{
}
// Code runs in Blend --> create design time data.
else
{
// Code runs "for real"
Messenger.Default.Register<NotificationMessage<string>>(this, new System.Action<NotificationMessage<string>>(NotificationMessageHandler));
}
}
private void NotificationMessageHandler(NotificationMessage<string> sender)
{
if ((sender.Notification == "refreshData"))
{
// Do something here
}
}
私のアプリでは、このイベントを保持する Singleton オブジェクトがあります。
Public Event DataChanged(ByVal EntityChanged As String,
ByVal IDChanged As Integer)
レコードが保存または削除されると、イベントが発生します (この場合、ポップアップ ウィンドウによって)
したがって、親ウィンドウ (または他のウィンドウ) で行う必要があるのは、イベントをサブスクライブし、イベントが発生したときにデータを更新することだけです。EntityChanged パラメーター (製品、注文、顧客など) と ID をチェックして、更新する必要があるかどうかを確認できます。
子ウィンドウ用の ViewModel があることを願っています。ChildWindow ですべてのデータを変更することになります。したがって、ウィンドウを閉じるときは、対応するモデルを DB に保存し、MainWindowView モデル コレクションを DB から再度ロードします。