我有一个允许用户编辑某些信息的窗口。保存后,信息将保存在数据库中。显示信息的父窗口从前面提到的数据库中获取信息。但是在子窗口关闭时,信息应该更新。我可以想到的最好的方法是从父窗口的viewmodel(最初填充信息的方法)调用一个方法。我发现这样做的最好方法是在视图的命令绑定中通过RelativeSource FindAncestor
。
但是,在设置断点之后,我确定了委托命令引发的方法永远不会被触发。
<Button x:Name="closeButton" Content="Close"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="75"
Margin="403,270,0,-46"
Click="CloseWindows"
Command="{Binding DataContext.MouseDownCommand,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type local:MainWindow}}}"/>
父视图模型中的命令:
MakeSelection = new DelegateCommand(OnSelectionMade);
设置断点的方法:
private void OnSelectionMade()
{
ShowDropDown = false;
CarrierList.Clear();
NodeTokenList = BackUpNodeTokenList; //reset list
_populateCarrierListWorker = new BackgroundWorker();
_populateCarrierListWorker.DoWork += new DoWorkEventHandler(PopulateCarrierList);
_populateCarrierListWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler
(PopulateCarrierCompleted);
_populateCarrierListWorker.RunWorkerAsync(_node);
ShowCarrierList = true;
}
答案 0 :(得分:1)
根据您使用的MVVM
框架,您可以使用EventAggregator
实施,例如PubSubEvent
Prism
或Messenger
MVVM Light
}。基本上,子视图模型在其命令执行时发送/发布通知,父视图模型订阅此类通知并执行其自己的通知处理程序方法。