Используя PRISM, как мне отобразить представление из другого модуля и получить доступ к его свойствам, чтобы обновить его состояние? - PullRequest
0 голосов
/ 26 февраля 2010

У меня есть два модуля, один из них является модулем заголовка, а другой - модулем элементов.

У меня есть представление HeaderDetails, которое содержит область, которая называется ItemsSummaryRegion. Этот регион зарегистрирован для заполнения региона представлением ItemListView из модуля Items.

regionManager.RegisterViewWithRegion("ItemsSummaryRegion", typeof(IItemListView));

Проблема в том, как мне получить доступ к этому автоматически сгенерированному представлению, чтобы я мог установить список элементов, которые он должен отображать? Я хочу установить это в ViewModel представления HeaderDetails.

Кто-нибудь знает, как вы это делаете? Или можете предложить лучший способ отображения этих данных?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 02 марта 2010

Если ваши два модуля так тесно связаны, не имеет ли смысла иметь только один модуль, содержащий оба вида, и настроить их с помощью master / detail.

Этот пример показывает нечто похожее на то, чего вы пытаетесь достичь: http://www.tanguay.info/web/index.php?pg=codeExamples&id=105

0 голосов
/ 26 февраля 2010

Вы должны использовать unityContainer для создания вещей, а затем вызывать Add и Activate.

    public TaskList(IEventAggregator eventAggregator, 
                    IRegionManager regionManager, 
                    IUnityContainer container)
    {
        _EventAggregator = eventAggregator;
        _RegionManager = regionManager;
        _Container = container;
    }


        IItemListVM vm = _Container.Resolve<IItemListVM>();
        IItemListView view = new IItemListView(vm);

        _RegionManager.Regions["ItemsSummaryRegion"].Add(view);
        _RegionManager.Regions["ItemsSummaryRegion"].Activate(view);

Это позволяет вам позвонить IRegion.Remove позже, когда вы хотите очистить регион. Если вы просто хотите зарегистрировать регион с представлением, вы можете сделать это тоже, просто замените последние пару строк моей логики другим вызовом RegisterViewWithRegion:

_RegionManager.RegisterViewWithRegion("ItemsSummaryRegion", 
     (x) => 
     { 
          _Container.Resolve<IItemListView>(); 
     });
...