Ich bin neu in C# und versuche, MVVM zu lernen, indem ich eine einfache Crud-App erstelle. In meiner App möchte ich eine Reihe von Schaltflächen haben, die, wenn der Benutzer darauf klickt, dieses Benutzersteuerelement laden. Wenn Sie auf "Element hinzufügen" klicken, wird das vorhandene Steuerelement durch AddItemView ersetzt. Ich habe mich gefragt, wie ich das mache? Viele der mvvm-Tutorials, die ich bisher gesehen habe, haben nur ein einziges Steuerelement auf dem MainMindow.MVVM Austauschen von Steuerelementen
0
A
Antwort
3
Für diese Art von Aufgabe verwenden Sie normalerweise ContentControl
. Binden Sie die Content
-Eigenschaft des Steuerelements an eine Eigenschaft Ihres ViewModel (z. B. CurrentViewModel
), und definieren Sie DataTemplates
in den Ressourcen für jeden Typ von ViewModel, der in ContentControl
angezeigt werden kann. Wenn Sie ein ViewModel CurrentViewModel
zuweisen, wählt das ContentControl
das entsprechende DataTemplate
für den Inhalt aus.
Hauptansichtsmodell
private object _currentViewModel;
public object CurrentViewModel
{
get { return _currentViewModel; }
set
{
if (value != _currentViewModel)
{
_currentViewModel = value;
OnPropertyChanged("CurrentViewModel");
}
}
}
App.xaml
<Application.Resources>
<DataTemplate DataType="{x:Type vm:AddItemViewModel}">
<v:AddItemView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:FooViewModel}">
<v:FooView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:BarViewModel}">
<v:BarView />
</DataTemplate>
...
</Application.Resources>
Hauptansicht
...
<ContentControl Content="{Binding CurrentViewModel}" />
...
In Ihrem Fall in der Befehl für die "Add item" Schaltfläche, weisen Sie eine Instanz von AddItemViewModel
zu CurrentViewModel
Verwandte Themen
- 1. MVVM und dynamische Generierung von Steuerelementen
- 2. Austauschen von Buchstaben mit Regexp
- 3. Austauschen von Zeichen im Zeichenfolgenarray
- 4. Austauschen von Elementen zwischen ArrayLists
- 5. Austauschen von Elementen in Edit1
- 6. Von Login-Steuerelementen betroffen
- 7. deaktivieren Klicken von Steuerelementen
- 8. Entwickeln von ActiveX-Steuerelementen
- 9. Austauschen von Objekten mithilfe von Zeigern
- 10. Bearbeiten von Datensätzen mit MVVM/MVVM-Light
- 11. Einfache Ereignisbehandlung in MVVM
- 12. Deaktivieren von Steuerelementen in Winforms
- 13. Hinzufügen von Steuerelementen zur Laufzeit
- 14. Benutzereingaben von dynamischen Steuerelementen abrufen
- 15. Größenanpassung von Steuerelementen Zur Laufzeit
- 16. Austauschen von Panels in einem Rahmen
- 17. Austauschen von Bytes in einer Datei
- 18. Problem mit dem Austauschen von Adressen
- 19. Austauschen von Variablen in einer Multithread-Umgebung
- 20. Austauschen von Knoten in einer verknüpften Liste
- 21. Austauschen von Endianness in Objective-C?
- 22. C# -Austauschen von Sharepoint-Listendaten nächtlich
- 23. Austauschen von Daten in Excel VBA-Benutzerformular
- 24. Austauschen von zwei Typen in einer Typenliste
- 25. Austauschen von Zeichenfolgen in einem Zeichenfolgenarray
- 26. Kann die VM von MVVM wiederverwendet werden?
- 27. Von MVC zu MVVM
- 28. aktualisieren withing von MVVM
- 29. Hinzufügen von Steuerelementen abhängig von SQL-Tabelle?
- 30. MVVM Foundation vs MVVM Toolkit
Sagen wir, wenn ich anstelle von nur ein einfaches Datenobjekt habe ich eine Gruppe von Elementen und einige Funktionen. Könnte ich UserControls anstelle von ViewModels ausschalten, und jedes UserControl könnte sogar ein eigenes ViewModel haben usw.? –