Удаление вида из региона в Silverlight PRISM - PullRequest
1 голос
/ 14 сентября 2009

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

Ответы [ 2 ]

2 голосов
/ 14 сентября 2009

Хорошо, позвольте мне ответить на два ваших вопроса.

Во-первых, если вы хотите, чтобы регион отображал только одно представление (например, если у вас есть регион, определенный как ContentControl), это возможно. Вы можете добавить много видов в этот регион, и будет показан только один активный . Чтобы показать другой вид в этом регионе, который уже был добавлен, вы просто Activate этот вид:

var region = regionManager.Regions["TabRegion"];

region.Add(view1);
region.Add(view2);

region.Activate(view2);

Таким образом, вы можете иметь много готовых экземпляров, но только один видимый.

Во-вторых, с истечением срока действия. Я бы сказал, что адаптер региона был бы самым чистым и правильным способом, но вы могли бы просто создать для них кэш с истекающим сроком действия, а когда он истек, вы можете удалить их из региона, если они не активны. :

var region = regionManager.Regions["TabRegion"];

region.Add(view1);
regionTracker.Add(view1, region, TimeSpan.FromMinutes(10));
region.Add(view2);
regionTracker.Add(view2, region, TimeSpan.FromMinutes(10));

region.Activate(view2);

И тогда реализация вашего срока действия для вашего regionTracker может просто:

if(!region.ActiveViews.Contains(ViewThatJustExpired))
{
     region.Remove(ViewThatJustExpired);
}

Это немного недоделано, но, надеюсь, это даст вам представление о том, куда идти.

0 голосов
/ 24 декабря 2009

Взгляните на мой пост в блоге о динамической загрузке модуля в PRISM с навигацией. В этом посте вы увидите, как я использую контейнер с несколькими представлениями, а затем поменяйте местами представления и не сфокусируйтесь. Он включает в себя наличие интерфейса для навигации, а затем вызывает события, которые меняют состояние представления с помощью диспетчера визуальных состояний.

Нажмите здесь, чтобы посмотреть

Джереми

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...