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. –
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 –