我正在尝试使用eventaggregator(Unity容器)在我的shell关闭时触发/发布事件 所以我可以在视图中保存一些设置。问题是,当我退出应用程序时,事件中不再有任何订阅者,就好像某些东西正在清除它们。我是事件聚合的新手,所以如果这是明显的事情就道歉!
我在我的Shell中完成了这个:
public Shell(IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
InitializeComponent();
}
protected override void OnClosing(CancelEventArgs e)
{
var theevent =_eventAggregator.GetEvent<ShellClosingEvent>();
theevent.Publish("closing");
}
我的观点:(我在构造函数中订阅)
eventAggregator.GetEvent<ShellClosingEvent>().Subscribe((x) =>
{
if (x != "closing") return;
using (var fs = new FileStream("clientGridSettings.xml", FileMode.Create, FileAccess.Write))
{
ClientsGrid.SaveCustomizations(fs);
}
});
活动:
public class ShellClosingEvent : PubSubEvent<string>
{
}