как передать сложный тип с помощью фреймворка Navigation - PullRequest
1 голос
/ 08 октября 2010

Как передать сложный объект цели Page, используя метод NavigationService.Navigate?

1 Ответ

2 голосов
/ 10 октября 2010

К сожалению, вы не можете этого сделать.Это имеет смысл, потому что идея состоит в том, чтобы обеспечить поддержку глубоких ссылок для страниц / просмотров, но это определенно раздражает, что вы не можете сделать это.У вас есть следующие варианты:

  • Для небольших объектов вы можете сериализовать их и передать их следующему представлению в строке запроса, хотя я бы рекомендовал противэтот подход (разные браузеры имеют разное количество максимальных символов в поддерживаемом ими URL-адресе, а также объект может устареть, если пользователь добавит эту страницу в закладки и вернется к ней).

  • Храните объект в глобальном кеше, из которого навигационное представление может получить к нему доступ.Не хорошо, но это будет работать.

  • Исходный код Navigation Framework является частью набора инструментов Silverlight.Вы можете изменить это, чтобы поддерживать сложные объекты, но я настоятельно рекомендую не делать этого.

  • Использовать шаблон MVVM с одной моделью представления, используемой для управления несколькими объектами.представления, и, следовательно, объект будет доступен для всех этих представлений.

Надеюсь, это поможет ...

Крис

PS Я обсуждаю это вмоя книга Pro Business Applications с Silverlight 4 , хотя и на такой глубине, как указано выше, поскольку решение проблемы не особенно удачно:).

...