|
Как заставить RequestNavigate (PRISM) регистрировать представления с их именем?
|
|||
---|---|---|---|
#18+
Задача: заставить RequestNavigate регистрировать представления с их собственным именем. Это необходимо для последующего обращения к ним с помощью Region.GetView(contract) Использование AutoPopulateExportedViewsBehavior с ViewExport регистрирует представления в регионах сразу при загрузке контейнера. Код моей вьюшки: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
По нажатию кнопки вызывается событие: Код: c# 1. 2. 3. 4. 5.
Затем RegionManager делает что-то вроде этого: Код: c# 1.
Мне же нужно заставить его делать это: Код: c# 1.
Чтобы потом вызвать вьюшку так: Код: c# 1.
Ай нид хэлп! =) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2012, 14:54 |
|
Как заставить RequestNavigate (PRISM) регистрировать представления с их именем?
|
|||
---|---|---|---|
#18+
Нашел статью про RequestNavigate: http://blogs.msdn.com/b/kashiffl/archive/2010/10/04/prism-v4-region-navigation-pipeline.aspx Представлена последовательность вызова методов. Реализовал метод ConfirmNavigationRequest интерфейса IConfirmNavigationRequest. Там прописываю: Код: c# 1. 2.
И тут новый затык: как динамически получать представление из экспорта, зная его имя? Было бы полезно что-нибудь из оперы: getExportedInstanceFromString(navigationContext.Uri.OriginalString) Только есть ли стандартные методы реализации чего-то подобного? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2012, 19:58 |
|
Как заставить RequestNavigate (PRISM) регистрировать представления с их именем?
|
|||
---|---|---|---|
#18+
Прочитай документацию и посмотри примеры. IConfirmNavigationRequest служит совсем для других целей: - для блокирования навигации - обработки смены view Если переход не запрещен(callback возвращает true), то Navigation Service c помощью DI контейнер создает View с нужным именем. Для этого View должно быть зарегистрировано при загрузке модуля в Unity контейнере, а при использовании MeF, иметь соответствующий атрибут - View ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2012, 22:30 |
|
Как заставить RequestNavigate (PRISM) регистрировать представления с их именем?
|
|||
---|---|---|---|
#18+
Собственно чем и занимаюсь. Если ты знаешь, как отловить загрузку View с помощью RequestNavigate другим путем, скажи, пожалуйста. А если нет, то чем плох для этих целей ConfirmNavigationRequest? =) В общем, пришел к выводу, что этот момент в PRISM как-то не особо продуман. И решил перегружать View при переходе на нее: Код: c# 1. 2. 3.
Переопределил RegionAdapter для своего элемента региона. Там срабатывает событие region.ActiveViews.CollectionChanged в методе protected override void Adapt(IRegion region, BooksContainer books), в котором уже и определяю логику для добавляемых и удаляемых элементов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2012, 10:08 |
|
|
start [/forum/topic.php?fid=21&fpage=37&tid=1441705]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 328ms |
total: | 466ms |
0 / 0 |