2009-05-12 9 views
2

Ich habe ein Geschäftsobjekt, sagen wir Kunde, es hat zu viele Felder, die auf einer Seite angezeigt werden, also teile ich es auf verschiedene Registerkarten. Die Daten sind nicht so, dass ich sie in aussagekräftige Bits aufteilen kann (wie Adresse, Status, Straßenname usw.), also habe ich beschlossen, das gleiche Modell und das gleiche Modell zu behalten und unterschiedliche Ansichten zu haben (jeder Tabsseiteninhalt) eine andere Ansicht) an dasselbe Ansichtsmodell binden.Wie wird das gleiche Viewmodel mit Unity an eine untergeordnete Ansicht übergeben?

vor allem ist dies der richtige Ansatz und warum nicht?

zweitens, wenn es ist, wie verwende ich die Einheit, um das gleiche Modell zu Kind Ansichten zu übergeben? Im Moment verwende ich Konstruktorinjektion, aber sie sind neue Instanzen des Ansichtsmodells.

Cheers,

Ali

Antwort

6

Wenn Sie Prism verwenden, dann können Sie RegionContext verwenden.

Geben RegionContext für TabControl:

<TabControl cal:RegionManager.RegionName="MyTabControl" 
cal:RegionManager.RegionContext="{Binding Path=ViewModel}"> 

Und es von Ansichten in dieser Region mit statischer GetObservableContext Methode auf RegionContext hinzugefügt Zugang:

void ViewConstructor() 
{ 
this.ViewModel = (MyViewModel)RegionContext.GetObservableContext(this).Value; 
} 

Wenn Sie nicht Prism verwenden, dann können Sie sich registrieren Ihr ViewModel als benannte Instanz:

Container.RegisterInstance<IMyViewModel>("viewModelName", new MyViewModel()); 

und g und es später verwenden:

Container.Resolve<IMyViewModel>("viewModelName");