Можно ли обмениваться кодом между веб-приложением Silverlight и приложением Windows Phone 7?
У меня есть простое приложение Silverlight, которое я хочу запустить на Windows Phone 7 почти так же, как есть. Я создал новый проект Windows Phone 7, и когда я ссылаюсь на приложение Silverlight, я получаю предупреждение "Добавление ссылки на проект Silverlight может не работать должным образом. Продолжить?".
Если я продолжу и все равно попытаюсь запустить, проект WP7 никогда не запускается или иногда я получаю сообщение об ошибке "AG_E_PARSER_BAD_TYPE", и он указывает на строку в xaml, в которой я использовал элемент управления из проекта Silverlight.
Код между этими двумя проектами примерно на 99% одинаков. Есть ли другой способ повторного использования кода, то, что я пытаюсь? Или как я могу заставить это работать?
3 ответа
Типичным способом достижения этого является использование шаблона, подобного MVVM, который позволит вам определить общую модель и уровень модели представления (возможно, в отдельном проекте), определяя другой уровень представления, который ссылается на этот общий проект.
Вы сказали это сами, вы будете делиться только БОЛЕЕ кодом, а не всем, поэтому вам, по крайней мере, когда-нибудь, потребуется создать специальную логику и макет устройства / внешнего интерфейса.
Я не очень знаком с разницей между двумя платформами, но вы можете связать файлы кода в другом проекте, не дублируя их. Добавьте существующий элемент и нажмите стрелку вниз рядом с кнопкой "Добавить" или кнопкой "ОК". Выберите ссылку.
Вместо добавления проекта Silverlight [предположительно, библиотеки классов] в ваше приложение WP7, попробуйте создать библиотеку классов WP7 и затем связать файлы из библиотеки Silverlight. У вас по-прежнему будет только одна копия каждого файла, но все ваши библиотеки будут собраны соответствующим образом для платформы, на которой они работают.
Это также может помочь вам определить причину проблемы. Ошибка AG_E_PARSER_BAD_TYPE
предполагает, что в вашем проекте Silverlight есть тип XAML, который не поддерживается на телефоне.