1) Да. Если вы когда-нибудь программировали Win32, тогда я понимаю ваши проблемы. Обработка пользовательского интерфейса в DLL была немного проблематичной.
Первый к выбору класса:
Всплывающий класс может использоваться для перекрытия текущего содержимого экрана. Его основной недостаток заключается в том, что он не ускоряется по HW, поэтому не подходит для сложных экранов или анимаций.
Лучшим решением может быть сохранение PhoneApplicationPage в вашей библиотеке (сборке). Результат такой же, как если бы страница была определена в сборке приложения. Эта статья описывает, как перейти к другой сборке.
Когда вы переходите на другую страницу (которая случайно хранится в другой сборке), отсутствует общий контекст пользовательского интерфейса, такой как главное окно приложения в Win32. Сами страницы полностью независимы. URI первой страницы записан в файле манифеста. (Часть файла xap.) Приложение решает, когда перейти на другую страницу. То же, что и для браузеров.
С технической точки зрения:
Ваша библиотека классов производит сборку (dll). Эта dll содержит a) код (аналогично старым добрым dll Win32), b) Xaml (точная копия кода Xaml, используемого в вашей библиотеке). То же, что и для вашей основной сборки.
Когда вы добавляете ссылку на библиотеку классов, эта dll будет добавлена в файл xap, то есть в установщик. Перейдите в папку bin и посмотрите в файл xap. Это тривиально, так как это просто zip-файл.