怎么可能?这个想法是将信息输入到弹出/子窗口内的表单中,然后,当您保存/关闭它时,它会自动更新最初打开弹出窗口的“父”窗口。
请建议,
谢谢
这是在 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
}
}
希望您将拥有子窗口的 ViewModel。它将在 ChildWindow 中更改所有数据。因此,当您关闭窗口时,将相应的模型保存到数据库并再次从数据库加载您的 MainWindowView 模型集合。
在我的应用程序中,我有一个包含此事件的 Singleton 对象:
Public Event DataChanged(ByVal EntityChanged As String,
ByVal IDChanged As Integer)
保存或删除记录时,会引发事件(在这种情况下,通过弹出窗口)
因此,您在父窗口(或任何其他窗口)中所要做的就是订阅事件,并在引发事件时刷新数据。您可以检查 EntityChanged 参数(产品、订单、客户等)和 ID 以查看是否必须刷新。