Вызов экрана пользовательского интерфейса из функции библиотеки классов в WP7

Я недавно начал разработку приложений для Windows 7 и застрял в проблеме, описанной ниже. Любая помощь очень ценится!

Я пишу функцию библиотеки классов WP7, которая будет вызываться из приложения Windows Phone. Я хочу иметь возможность показать пользователю новый экран после вызова функции, вызванной из функции библиотеки классов. Я также хочу, чтобы этот экран был правильно интегрирован с остальным пользовательским интерфейсом приложения. Как, например, щелкнув кнопку "Назад" на экране пользовательского интерфейса, я должен перейти к экрану пользовательского интерфейса, который присутствовал до вызова.

Эта библиотека классов WP7 должна быть связана как скомпилированная библиотека с приложением Windows Phone. Имея это в виду, у меня есть следующие два вопроса.

1) Возможно ли даже запустить экран пользовательского интерфейса из библиотеки классов в Windows phone 7? Если нет, что еще я мог бы сделать здесь?

2) Можно ли интегрировать этот экран с остальной частью пользовательского интерфейса приложения, как описано выше.

2 ответа

Очевидно, вы можете включить страницы XAML в вашу библиотеку. Для этого вы должны включить файл .pdb, который генерируется вместе с .dll для вашего библиотечного класса. Скопируйте файлы.dll и .pdb в свой проект и добавьте ссылку на .dll.

1) да. Если вы когда-нибудь программировали Win32, тогда я понимаю ваши проблемы. Обработка пользовательского интерфейса в DLL была немного проблематичной.

Сначала к выбору класса:

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

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

Когда вы переходите на другую страницу (которая случайно хранится в другой сборке), отсутствует общий контекст пользовательского интерфейса, такой как главное окно приложения в Win32. Сами страницы полностью независимы. URI первой страницы записан в файле манифеста. (Часть файла xap.) Приложение решает, когда перейти на другую страницу. То же, что и для браузеров.

С технической точки зрения:

Ваша библиотека классов производит сборку (dll). Эта dll содержит a) код (аналогично старым добрым dll Win32), b) Xaml (точная копия кода Xaml, используемого в вашей библиотеке). Это так же, как для вашей основной сборки.

Когда вы добавляете ссылку на библиотеку классов, эта dll будет добавлена ​​в файл xap, то есть в установщик. Перейдите в папку bin и посмотрите в файл xap. Это тривиально, так как это просто zip-файл.

Другие вопросы по тегам