wp7 contentpresenter - настройка контента на той же странице - PullRequest
0 голосов
/ 20 января 2011

Я использую страницу (с именем containerpage) с ContentPresenter (с именем PageContent) и устанавливаю для ее содержимого экземпляр PhoneApplicationPage (contentpage) в обработчике событий OnNavigatedTo() страницы. У меня также есть главная страница с кнопкой «Показать форму». Когда я нажимаю на эту кнопку, программа переходит на страницу контейнера, которая устанавливает содержимое своего contentpresenter на страницу содержимого. Моя проблема: если я нажимаю «показать форму», затем нажимаю кнопку «Назад» и снова нажимаю «показать форму», я получаю ArgumentException с текстом

«Неверный параметр»

на линии

this.PageContent.Content = contentpage; 

в обработчике событий OnNavigatedTo() на странице контейнера. Я предполагаю, что это потому, что я уже установил другой контент ContentPresenter для этой страницы контента (потому что навигация создает новую страницу), но если это проблема, как я могу отменить назначение своей страницы контента из предыдущего контента ContentPresenter?

Ответы [ 2 ]

0 голосов
/ 21 января 2011

Если честно, я удивлен, что установка свойства Content одной страницы в качестве экземпляра другой страницы даже работает! Я действительно рекомендовал бы против этого как долгосрочное решение. Если содержимое первой страницы является динамическим в зависимости от какого-либо условия, используйте вместо него UserControl s.

Если данные для UserControl не сохраняются между вызовами к ShowForm, то вы можете просто каждый раз создавать новый экземпляр, и тогда у вас не будет проблем с повторным воспитанием.

Если вы сможете уточнить сценарий вашего приложения и то, что вы пытаетесь достичь, тогда мы сможем дать лучший ответ.

0 голосов
/ 20 января 2011

Как уже упоминал дециклон, ваш вопрос будет намного понятнее с подробным кодом. Тем не менее, вы можете реализовать OnNavigatedFrom() на своей странице и установить Content на null.

Возможно, вы захотите рассмотреть, как работает этот дизайн, если приложение захоронено на контейнерной странице.

...