Tilføj eventhandler i constructor - WPF
Jeg har lavet en WPF GUI, som har et border hvori jeg ligger andre "vinduer" (UserControl) ind i, og disse skifter jeg så ud med knapper på en bar i siden.Det jeg så gerne vil undgå, er for stor en kobling mellem de enkelte usercontrols og mainvinduet, og derfor ikke sende referencer til mit main window med ned i de enkelte usercontrols.
Problemet er så, at nogen gange skal indholdet i min border kunne skiftes ud "af sig selv", i den forstand, at nogen af mine UserControls, skal kunne skifte sig ud med nogen af de andre, hvilket pt. er noget jeg løser således:
if(Parent is Border)
((Border)Parent).Child = new TestVindue();
Det er koblinger som det jeg gerne vil undgå, og tænkte derfor istedet i over i noget med event i stedet til at håndtere det. På den måde er det mit mainwindow der bliver informeret om at der skal ske ændringer, og det tager den sig så af.
So far so good, og det ser ud til at klare skærene for mig. Problemet er så bare, at hvis jeg ikke har forbindelse til serveren, så er der nogle UserControls der får en ugyldig opstart, og de skal så skiftes ud med noget andet. Men da det allerede sker i konstruktøren, så sker det før jeg får tilføjet en eventhandler, og så kan jeg ikke klare det af den vej.
Er der en måde hvorpå jeg kan sende et link til metoden med, og tilføje eventhandleren allerede i konstruktøren, eller bliver jeg nød til at håndtere den her problemstilling med exceptions?
Eller griber jeg det evt. helt forkert an, og burde gøre det på en anden måde?