Как реализовать функцию базового просмотра в Windows Phone 7? - PullRequest
1 голос
/ 14 марта 2011

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

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

спасибо, Mark

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

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

<local:BasePage xmlns ...
                xmlns:local="clr-namespace:MyNamespace"
                x:Class="MyNamespace.MyPage">

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

Если вы хотите показать тост или окно сообщения, я бы порекомендовал ToastRequestTrigger и MessageBoxRequestTrigger из Silverlight Toolkit , как описано в шаблонах и практиках WP7 Руководство разработчика .

1 голос
/ 14 марта 2011

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

Кроме того, вы можете унифицировать логику для отображения всплывающего окна, но это, вероятно, другая история:)

Это проверяемое и хорошо отделенное от вида.

Надеюсь, это поможет, Роберт

...