Zugriff auf Variablen klassenübergreifend

  • WPF

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von kafffee.

    kafffee schrieb:

    Kannst du mir vielleicht sagen woran das liegen kann bzw. was ich dagegen tun könnte?

    Wahrscheinlich... nicht. Was vor allem daran liegt, dass ich anhand deiner zwei Zeilen Code den gesamten Überblick nicht habe und auch nicht weiß, wie genau du das denn eigentlich miteinander verwurschtelt hast.

    Aber ich habe eine Vermutung, die ich dir äußern kann:

    Wenn

    Quellcode

    1. ​SucheViewModel = Nothing
    wird es daran liegen, dass SucheViewModel noch nicht gesetzt oder nicht mehr gesetzt ist. Die Frage ist, wann rufst du

    Quellcode

    1. ​LayerViewModel.SucheViewModel.InhaltGesamt.Add(New MP3FileInfo([...]))
    denn auf? Rufst du das eventuell bereits in einer Funktion auf, die ausgeführt wird, bevor das eigentliche SucheViewModel initialisiert worden ist?

    Wenn du mittels eines Layers arbeitest - und das ist gaaaaaanz wichtig - musst du diesen Layer als aller erstes von allen Dingen initialisieren, die darin enthalten sind und musst ihm zwangsläufig auch hier alle Abhängigkeiten zufügen und selbst initialisieren.
    Also muss

    Quellcode

    1. ​SucheViewModel = new ...
    zwangsläufig im Konstruktor des Layers stattfinden. Und wenn du dann dieses ViewModel noch irgendwo anders brauchst, musst du exakt dieses Model durch den Layer zuweisen:

    Quellcode

    1. ​ IrgendeineVariableDieDasSucheViewModelBraucht = LayerViewModel.SucheViewModel
    respektive:

    Quellcode

    1. IrgendeineVariableDieDasSucheViewModelBraucht = LayerViewModel.GetSucheViewModel


    Aber wie gesagt, das ist gerade echt nur ne Vermutung, da ich dein gesamtes Konstrukt so nicht kenne

    PadreSperanza schrieb:

    Rufst du das eventuell bereits in einer Funktion auf, die ausgeführt wird, bevor das eigentliche SucheViewModel initialisiert worden ist?


    Habs grad mal getestet. Ja das tu ich leider...Und ohne grössere fehlerträchtige Umbauarbeiten krieg ich das auch nicht umgewurschtelt...

    Daher meine Frage an @Nofear23m:

    Du hast in Post 9 geschrieben:

    Nofear23m schrieb:

    Ansonsten (falls dies wirklich notwendig wäre) würde ich das MainViewModel als Service anmelden, dadurch hast du überall Zugriff und kannst dir jederzeit die Instanz holen.

    Kannst du mir sagen wie ich dabei vorgehe? Ich nehme an das hat dann was mit IWindowService zu tun?

    kafffee schrieb:

    Ich nehme an das hat dann was mit IWindowService zu tun?

    Du hast das mit den Services noch nicht verstanden. Bitte tu dir selbst einen gefallen und versuche das zu verstehen, du kommst so nicht weiter.

    Du meldest eine Klasse und in Folge eine Instanz davon als Service an und kannst dann auf dieses Service zugreifen da es durch ein Interface abstrahiert wurde.
    Willst du eine Klasse anmelden welche die z.b. das MainViewModel hält dann musst du eine solche klasse erstellen, natürlich anhand eines Interfaces.

    Das Prinzip ist immer das gleiche. Gehe den Code durch, verstehe oder lerne Interfaces. Ohne dem Wissen steht du jeden Tag aufs neue an.
    Ansonsten musst du bitte warten bis die jeweiligen Kapitel fertig sind. Ich habe die Services nun bereits ein halbes dutzend mal genau erklärt, du musst dir die Threads nur genau durchlesen und die Beispielcodes verstehen versuchen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Genau, wobei ich nicht weis obs ein, zwei oder drei Teile werden.
    Aber die Teile kommen jedenfalls Zug um Zug relativ rasch hintereinander.
    Da ich denke das hier die ein oder andere Frage aufkommt, könnte ich dann eben im folgeteil auf die Fragen eingehen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##