Как передать ту же модель представления в дочернее представление, используя единство? - PullRequest
2 голосов
/ 12 мая 2009

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

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

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

Приветствия

Али

1 Ответ

6 голосов
/ 12 мая 2009

Если вы используете 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());

и получите позже, используя:

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