Ich bin relativ neu zu MVVM und MVVM Licht, aber ich denke, ich verstehe die allgemeine Idee davon. Was ich nicht verstehe, ist, wenn ich ein neues Fenster öffnen möchte, aber dieses Fenster benötigt Daten vom Anrufer, was ist die beste Vorgehensweise, um diese Daten in das neue Fenster zu bekommen? Wenn ich die Daten an den Konstruktor übergebe, bedeutet das, dass ich Code im Code benötige, um ihn an das View-Modell zu übergeben. Ich kann keine Nachrichten verwenden, da es sich nicht um grundlegende Daten handelt. Danke im Voraus.Beste Praxis zum Öffnen eines neuen Fensters in MVVM Light mit Parametern
Antwort
Eine beliebte Wahl ist die Verwendung einer Serviceklasse, die ein Ansichts-/Ansichtsmodell erstellt und die neue Ansicht anzeigt. Ihr Ansichtsmodellkonstruktor und/oder die Methode/Eigenschaft könnte die Daten vom Aufrufer erhalten, und dann wäre die Ansicht an das Ansichtsmodell gebunden, bevor sie auf dem Bildschirm angezeigt wird.
hier ist eine sehr sehr einfache Implementierung eines DialogService:
public class DialogService : IDisposable
{
#region Member Variables
private static volatile DialogService instance;
private static object syncroot = new object();
#endregion
#region Ctr
private DialogService()
{
}
#endregion
#region Public Methods
public void ShowDialog(object _callerContentOne, object _callerContentTwo)
{
MyDialogViewModel viewmodel = new MyDialogViewModel(_callerContentOne, _callerContentTwo);
MyDialogView view = new MyDialogView();
view.DataContext = viewmodel;
view.ShowDialog();
}
#endregion
#region Private Methods
#endregion
#region Properties
public DialogService Instance
{
get
{
if (instance == null)
{
lock (syncroot)
{
if (instance == null)
{
instance = new DialogService();
}
}
}
return instance;
}
}
#endregion
}
Würden Sie mir bitte ein einfaches Beispiel zeigen? Ich bin mir nicht sicher, ob ich dir vollständig folge. –
http://blog.roboblob.com/2010/01/19/modal-dialogs-with-mvvm-and-silverlight-4/ – geedubb
Geedubb, das nur für Silverlight funktioniert. Ich baue eine WPF-Anwendung auf Visual Studio 2010. –
- 1. Öffnen eines neuen Fensters in Silverlight
- 2. Bearbeiten von Datensätzen mit MVVM/MVVM-Light
- 3. Problem beim Öffnen eines neuen Fensters in Python mit tkinter
- 4. Öffnen eines neuen Browser-Fensters mit spezifischem HTML
- 5. Öffnen eines neuen Fensters mit jquery.min.js und Aufrufen von app.js
- 6. Öffnen eines neuen HTML-Fensters im schreibgeschützten Modus
- 7. WinRT MVVM Light Beispielprojekt
- 8. Eclipse Plugin: Öffnen eines neuen Fensters von der WorkBench
- 9. MVVM Light Messaging Problem
- 10. Öffnen eines About-Felds mit MVVM-Muster
- 11. So zeigen Sie Android Tableiste beim Öffnen eines neuen Fensters
- 12. MVVM Light Toolkit Beispiele
- 13. MVVM Light Messenger Klasse
- 14. JavaFX - CSS wird beim Öffnen eines neuen Fensters nicht geladen
- 15. Öffnen eines neuen Fensters, wenn die Chrome-Erweiterung deinstalliert wird
- 16. Öffnen eines modalen Popup-Fensters
- 17. Die "WindowState" -Eigenschaft eines Fensters in WPF mit MVVM binden
- 18. Mein Code zum Öffnen eines neuen Fensters hat keine Wirkung. Kann jemand meinen Fehler erkennen?
- 19. Wie verwende ich MVVM-Light mit Token?
- 20. MVVM Light - Benutzersteuerelemente als Ansichten
- 21. Datenbindung mit MVVM Light und VB.NET
- 22. MVVM Light RelayCommand funktioniert nicht
- 23. MVVM Light IOC Container Beispiel
- 24. Verkabelungsansichten in MVVM Light für WPF
- 25. MVVM Light - Inhalt ändern Formular dynamisch Ressource zum binden
- 26. Öffnen eines neuen Fensters mit PHP und Anzeigen von Daten in diesem
- 27. jQuery-Funktion zum Öffnen eines Links in einem neuen Fenster
- 28. MVVM Light - Mehrere ViewModels (und verbinden sie)
- 29. Scrollen Sie zum Anfang eines Steuerelements mit ScrollViewer in MVVM
- 30. Die beste Methode zum Öffnen eines Sockets in Python
Leider dies aus der antiken Vergangenheit wieder zu beleben, aber was du meint mit "I nicht-Funktion nutzen kann, weil es nicht basisch ist Daten." ? Ich frage das, weil ich MVVM lerne und wenn ich in Ihrer Situation wäre, würde ich Messaging verwenden. – lightxx
Es tut mir leid, dass es zu lange für mich war, sich daran zu erinnern –