Ich habe zwei Möglichkeiten der Initialisierung von Views und ViewModels in WPF CAL MVVM.Was ist die richtige Methode zum Initialisieren eines Modells und einer Ansicht in WPF CAL MVVM
1 - Scheint beliebter zu sein. Erfordert, dass Sie das ViewModel auflösen, um die Ansicht automatisch aufzulösen. Das ViewModel enthält Informationen über die Ansicht.
public interface IView
{
void SetModel(IViewModel model);
}
public interface IViewModel
{
IView View { get; }
}
public class View
{
public void SetModel(IViewModel model)
{
this.DataContext = model;
}
}
public class ViewModel
{
private IView view;
public ViewModel(IView view)
{
this.view = view;
}
public IView View { return this.view; }
}
2 - scheint viel sauberer und entfernt den Blick von dem Ansichtsmodell. Erfordert, dass Sie die Ansicht auflösen, um das ViewModel automatisch aufzulösen. Injiziert Objekte in die Ansicht (Nicht sicher, ob dies gut ist oder nicht).
public interface IView
{
}
public interface IViewModel
{
}
public class View
{
private IViewModel model;
public View(IUnityContainer unityContainer)
{
this.model = unityContainer.Resolve<IViewModel>();
this.DataContext = this.model;
}
}
public class ViewModel
{
}
Was ist die akzeptierte Methode der Initialisierung der Ansichten und Modelle und was sind die Vor- und Nachteile der einzelnen Methoden. Sollten Sie Objekte in Ihre Sicht injizieren?
Die View-Eigenschaft in Option 1 wurde gefunden, von mir in verschiedenen Beispielen, aber ich stimme zu, dass es nicht da sein sollte. – anon