Я пытаюсь использовать eventaggregator (контейнер Unity) для запуска / публикации события, когда моя оболочка закрывается, поэтому я могу сохранить некоторые настройки в представлении. Проблема в том, что когда я выхожу из приложения, подписчиков на событие больше нет, как будто что-то их очищает. Я новичок в агрегации событий, поэтому извиняюсь, если это что-то очевидное!
Я сделал это в своей оболочке:
public Shell(IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
InitializeComponent();
}
protected override void OnClosing(CancelEventArgs e)
{
var theevent =_eventAggregator.GetEvent<ShellClosingEvent>();
theevent.Publish("closing");
}
И мой View: (подписываюсь в конструкторе)
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>
{
}