In meiner WPF-Anwendung muss ich etwas mit meinem MainWindow auf dem ViewModel senden. So war meine Idee this.DataContext = new ViewModel (this)
in Code-behind zu setzen, und dann im Konstruktor des View-Modell könnte ich benutzen Sie einfach die ‚this‘ Parameter, die ich als die Window-Instanz geschickt hatte:Übergeben der MainWindow-Instanz an ViewModel
public ViewModel(Window Wndw){/../}
Nun, was ich tun müssen, ist ein ‚Maingrid‘ Element zuzugreifen, die in meinem Fenster ist:
<Window bunch
of
stuff>
<Grid x:Name="MainGrid">
</Grid>
</Window>
aber wenn ich versuche, so etwas wie:
Grid MGrid = Wndw.FindName("MainGrid") as Grid
ich erhalte keine Fehler, aber es ist immer null, also ich ke ep bekommt Null Reference Exception, wenn ich versuche, irgendetwas mit MGrid zu tun. Die Wndw ist nicht Null, ich habe das getestet. Und es ist auch keine Option, MainGrid anstelle des gesamten Fensters zu übergeben.
Irgendwelche Ideen?
Tu das nicht. Übergeben Sie dieses Fenster niemals, um das Modell anzuzeigen. Dann ist es nicht sinnvoll, dem MVVM-Muster zu folgen. – ViVi
Ich folge nicht strikt dem MVVM-Muster –
Dann schreiben Sie den Code einfach in Window.xaml.cs als übergeben Sie es an Viewmodel. Dies scheint eine nutzlose Übung zu sein. Mit MVVM können Sie auf das Fenster im Ansichtsmodell zugreifen. Fügen Sie es nicht ein, um den Modellkonstruktor so anzuzeigen. – ViVi