Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > WPF PRISM передача данных во вложеные регионы


Автор: lambidu 20.3.2015, 10:26
здравствуйте,
работаю над программой для администрирования большого портала с онлайн магазином

создал модуль Каталог. Сейчас в нём 5 ViewModel-ов (BrandsViewModel, GroupsViewModel, ProductsViewModel, ArticlesViewModel, DocumentsViewModel)
есть View-шки для отображения и редактирования первых 3-х, всё работает нормально, всё редактируется и сохраняется как надо.

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

ещё нужна возможность добавлять статьи к владельцу из формы создания
(сохранять в модель владельца, а не в базу, так как владелец ещё не сохранён)

попробовал сделать вложеный регион (ArticlesRegion) и передавать модель владельца с помощью NavigationParameters
Код

    NavigationParameters parameters = new NavigationParameters() {
        { "Owner", this.Entry }
    };

    this.regionManager.RequestNavigate("ArticlesRegion", new Uri("ArticlesListView", UriKind.Relative), parameters);

но похоже что OnNavigatedTo из INavigationAware не срабатывает, вобще ничё не отображается (сейчас ищу что не так)

так-же пробовал инъектировать ArticlesListView в ArticlesRegion предварительно создавая ArticlesViewModel и присваивая ему ссылку на владельца
Код


    ArticlesListViewModel viewModel = this.container.Resolve<ArticlesListViewModel>();

    viewModel.Owner = this.Model;

    ArticlesListView view = new ArticlesListView(viewModel);

    IRegionManager rm = this.regionManager.Regions["ArticlesRegion"].Add(view, null, true);

    rm.Regions["ArticlesRegion"].Activate(view);



но это как-то странно работает... 
если перейти к одному брэнду то его список статей отображается, 
перехожу к другому брэнду - ничего нет, захожу назад к первому - тоже ничего нет 
(вобще View не рисуется в регион)

как правильно реализовать такую цепочку?
может у кого-то было что-то аналогичное...

спасибо за-ранее



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)