I have a Dock pane, that when it closes, i want to remove the selection changed event. Then when i reopen it, I want to resubscribe. Is there a better way to do this than by tracking the subscribed with a boolean? I don't want it on when the dockpane is hidden, but i want it to be available again when I bring the pane back to showing. I can't seem to simply unsubscribe and resubscribe like i want because OnShow gets called like 3 times when the pane is loaded and adds multiple Subscribes.
protected AttributeEditorViewModel()
{
MapSelectionChangedEvent.Subscribe(OnMapSelectionChanged);
subscribed = true;
}
~AttributeEditorViewModel()
{
MapSelectionChangedEvent.Unsubscribe(OnMapSelectionChanged);
subscribed = false;
}
protected override void OnHidden()
{
if (subscribed)
{
MapSelectionChangedEvent.Unsubscribe(OnMapSelectionChanged);
subscribed = false;
}
}
protected override void OnShow(bool isVisible)
{
if (!isVisible || subscribed)
{
MapSelectionChangedEvent.Unsubscribe(OnMapSelectionChanged);
subscribed = false;
}
else
{
MapSelectionChangedEvent.Subscribe(OnMapSelectionChanged);
subscribed = true;
}
}