Mein anliegen mag wohl für den ein oder anderen etwas kleinlich erscheinen doch löst es in mir derzeit einige Fragezeichen aus.
Ich veröffentliche in meinem VM1 ein Event (Nutze das eventAggregator von prism)
und wechsle zu meiner Ansicht 2.
Meine V2 besitzt ein ContentControl indem ich mir V3 anzeigen lassen.
regionManager.RequestNavigate("ShellRegion", "V1");
eventAggregator.GetEvent<AccountIDEvent>().Publish(Acc);
VM2 und VM3 greifen auf das Event zu.
// VM 2
public VM2(IEventAggregator _ea)
{
ea = _ea;
_token = eventAggregator.GetEvent<AccountIDEvent>()
.Subscribe((item) => { Acc = item; });
}
private Account _acc;
public Account Acc
{
get { return _acc; }
set { SetProperty(ref _acc, value); }
}
// VM 3
public VM3(IEventAggregator _ea)
{
ea = _ea;
_token = eventAggregator.GetEvent<AccountIDEvent>()
.Subscribe((item) => { Acc = item; });
}
private Account _acc;
public Account Acc
{
get { return _acc; }
set { SetProperty(ref _acc, value); }
}
Was ich nun nicht so ganz nachvollziehen kann ist, weshalb meine VM3 ein NullReferenceException auswirft, meine VM2 aber nicht ?
Ebenso übernimmt mein Acc im VM2 den Wert, mein Acc im VM3 jedoch nicht.
Ich dachte erst, da mein V2(VM2) aus der V1 geladen wird durch den regionManager, dass der Wert eventuell überladen wird o.d.,
ich hatte versucht, den Event mal zu unsubscrippen, in der Hoffnung, jedoch veränderte sich da nichts. Ob ich im VM2 nun auf das Event zugreife oder nicht, das problem, dass es zum einen im Vm3 (wo es tatsächlich gebraucht wird) nicht übernommen wird als auch eine NullReferenceException auswirft ist für mich irgendwie grad etwas fraglich.
--
Ich weiß, dass die Fehlermeldung kommt, da Acc nie etwas zugewiesen bekommt, jedoch tut es im VM2 auch nicht und dort erscheint die Meldung nicht.