Можно ли заставить фреймворк Silverlight Navigation очистить кеш? - PullRequest
0 голосов
/ 03 марта 2010

По сути, я использую стиль «просмотр в первую очередь» для подключения MVVM - это означает, что представление создает экземпляр модели представления (ну, оно извлекает ее из локатора службы, который использует единичный контейнер для ее разрешения, но неважно). Это работает довольно хорошо в большинстве случаев - парадигма фреймворка Navigation, кажется, лучше всего работает с подходом, основанным на представлении, так как строка запроса отображается на представление.

При некоторых условиях я хотел бы, чтобы страница обновлялась при навигации, а это означает, что я хочу, чтобы она была удалена из кэша. Я еще не нашел хороший способ сделать это.

Что-то, что я рассматриваю, это чтобы страница прослушивала подходящее событие и установила для ее NavigationCacheMode значение «отключено», но я бы предпочел определить это поведение в центральном месте - например, в контроллере моего приложения.

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

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

Мое решение состояло в том, чтобы создать метод для очистки кэша, изменив размер как:

public static void ClearCache()
{
    int size = frame.CacheSize;
    frame.CacheSize = 0;
    frame.CacheSize = size;
}

Затем я вызываю после перехода обратно на страницу входа:

PageConductor.Navigate("/Login");
PageConductor.ClearCache();

Это работает, если страница имеет NavigationCacheMode = "Включено". Не работает с обязательным параметром.

0 голосов
/ 17 декабря 2010

Так как никто никогда не отвечал, я хотел поделиться своим возможным решением. Самый простой способ заставить это работать - это подключить поведение, которое прослушивает событие «clearCache». Когда событие запускается, поведение устанавливает для кэша страниц значение false, и эта страница удаляется из кэша.

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

...