2

それはどのように可能ですか?アイデアは、ポップアップ/子ウィンドウ内のフォームに情報を入力し、それを保存/閉じると、ポップアップが最初に開かれた「親」ウィンドウを自動的に更新することです。

親切に提案、

ありがとう

4

3 に答える 3

1

これは、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
        }
    }
于 2010-07-11T22:00:51.763 に答える
0

私のアプリでは、このイベントを保持する Singleton オブジェクトがあります。

Public Event DataChanged(ByVal EntityChanged As String, 
                               ByVal IDChanged As Integer)

レコードが保存または削除されると、イベントが発生します (この場合、ポップアップ ウィンドウによって)

したがって、親ウィンドウ (または他のウィンドウ) で行う必要があるのは、イベントをサブスクライブし、イベントが発生したときにデータを更新することだけです。EntityChanged パラメーター (製品、注文、顧客など) と ID をチェックして、更新する必要があるかどうかを確認できます。

于 2010-07-09T13:52:16.167 に答える
0

子ウィンドウ用の ViewModel があることを願っています。ChildWindow ですべてのデータを変更することになります。したがって、ウィンドウを閉じるときは、対応するモデルを DB に保存し、MainWindowView モデル コレクションを DB から再度ロードします。

于 2010-07-09T09:45:34.273 に答える