2009-05-12 3 views
2

У меня есть бизнес-объект, скажем, клиент, у него слишком много полей для показа на одной странице, поэтому я разделяю его на разные вкладки. данные не так, что я могу разделить его на значащие биты (например, адрес, состояние, название улицы и т. д.), поэтому я решил сохранить ту же модель и модель представления и иметь разные представления (каждое содержимое вкладки другое представление) привязаны к одной и той же модели представления.Как передать одну и ту же модель просмотра детскому представлению с использованием единства?

Прежде всего, это правильный подход и почему бы и нет?

во втором случае, если есть, то как я могу использовать единство, чтобы пройти те же вид модели для детей просмотров? на данный момент я использую инъекцию конструктора, но это новые экземпляры модели представления.

Приветствия,

Али

ответ

6

Если вы используете Prism, то вы можете использовать RegionContext.

Укажите RegionContext для TabControl:

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

и доступ к нему из представления, добавляемые в этой области, используя статический метод GetObservableContext на RegionContext:

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

Если вы не используете Prism, то вы можете зарегистрироваться ваш ViewModel как именованный экземпляр:

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

и g et it later using:

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