Veröffentlicht 30. Juli 201510 j Moin da draußen, ich habe grade angefangen ein Tool mit verschiedenen Funktionen zu bauen. Nun will ich aber nicht für jede Funktion (Maske) ein eigenes Fenster öffnen, sondern habe ich klassisch als oberstes eine menubar, darunter eine toolbar und als Hauptfeld derzeit ein Stackpanel in dem die Arbeitsmaske dargestellt wird. Wenn ich nun aber als Beispiel einen neuen User anlegen oder statt einen Datensatz zu Verwalten einen selbigen Abrechnen will, möchte ich, dass das Stackpanel die passende Maske anzeigt. Ich hoffe ihr versteht was ich vorhabe und ich habe es nicht zu skurril ausgedrückt Falls eine/r von euch eine Idee hat wie ich das umsetzen kann bzw welchen Themenbereich ich mir dazu anschauen sollte wäre ich für jeden Hinweis mehr als Dankbar!! Vielen Dank schon mal im Voraus Doc
30. Juli 201510 j Wenn du ordentlich nach dem MVVM Pattern arbeitest ist das ziemlich einfach. Im Prinzip hast du ein ContentControl welches die Maske anzeigen soll und an eine Variable deines ViewModels gebunden welche ein anderes ViewModel darstellt. In deiner View hast du dann noch ein DataTemplate welches der View sagt mit welcher anderen View sie ein bestimmtes ViewModel darstellen soll. Wenn du jetzt der Variable im ViewModel ein anderes ViewModel zuweist wird automatisch die dazu passende View angezeigt. Um das mal etwas zu verdeutlichen noch ein paar auszüge: <Window.Resources> <DataTemplate DataType="{x:Type pd:PersonDataVM}"> <pd:PersonDataView /> </DataTemplate> </Window.Resources> <ContentControl Grid.Row="1" Content="{Binding Path=CurrentViewModel}" /> [/PHP] [PHP] BaseVM currentViewModel; public BaseVM CurrentViewModel { get { return currentViewModel; } set { if (currentViewModel != value) { currentViewModel = value; OnPropertyChanged("CurrentViewModel"); } } } Alle ViewModels haben halt BaseVM als Basisklasse.
31. Juli 201510 j Autor Vielen Vielen Dank!! Ich schaue mir das Thema MVVM grade an und damit wird sich das sicher umsetzen lassen Doc
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.