Перезагрузить родительское окно из всплывающего («дочернего») окна - PullRequest
2 голосов
/ 09 июля 2010

как это возможно?Идея состоит в том, чтобы ввести информацию в форму внутри всплывающего / дочернего окна, а затем, когда вы сохраняете / закрываете ее, она автоматически обновляет окно «Родитель», из которого первоначально было открыто всплывающее окно.

Пожалуйста, предложите,

Спасибо

Ответы [ 3 ]

1 голос
/ 12 июля 2010

Это отличная причина для использования класса Messenger в MVVM Light.Создайте сообщение 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
        }
    }
0 голосов
/ 09 июля 2010

В моем приложении есть объект Singleton с удержанием этого события:

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

Когда запись сохраняется или удаляется, событие вызывается (в данном случае всплывающим окном)

Таким образом, все, что вам нужно сделать в родительском окне (или в любом другом окне), это подписаться на событие и обновить данные при возникновении события. Вы можете проверить параметр EntityChanged («Продукт», «Заказ», «Клиент» и т. Д.) И идентификатор, чтобы узнать, нужно ли обновлять.

0 голосов
/ 09 июля 2010

Надеюсь, у вас будет ViewModel для дочернего окна.Было бы иметь все данные, измененные в ChildWindow.Следовательно, когда вы закрываете окно, сохраните соответствующие модели в БД и снова загрузите ваши коллекции моделей MainWindowView из БД.

...