2013-08-28 3 views
3

В моем проекте у меня есть библиотека, совместно используемая между клиентами WP7 и WP8. Библиотека содержит виды, просматривать модели и другие интересные данные.Экраны с использованием LongListSelector, разделяемые между WP7 и WP8

Я также хочу использовать последнюю версию Windows Phone Toolkit.

Проблема, с которой я сталкиваюсь, заключается в том, что, хотя мой код xaml совместим, я получаю ошибку времени выполнения, поскольку LongListSelector существует в разных сборках в Windows Phone Toolkit для wp7 и в коде оболочки для WP8.

в WP7:

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 

в WP8:

xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 

Как я могу решить эту головоломку без необходимости дублировать мои xamls для обеих платформ?

+2

Я просто нашел это: http://laserbrain.se/post/2013/04/28/Fixing-the-assembly-hopping -between-WP7-and-WP8.aspx, попробовав это сейчас. –

ответ

0

В конце концов, это решение, которое я решил реализовать:

  1. Я решил, что библиотека, которая содержит все виды для WP7 WP8 не было подходящее место для представлений, которые на самом деле являются разными в соответствующих платформах , Поэтому я создал две копии проблематичных представлений и разместил их в своих соответствующих проектах приложений для WP7 и WP8.

  2. Это создало некоторое дублирование в xaml - к счастью для меня мои xamls были не очень сложными - всего несколько элементов управления, стилизованных. Поэтому я создал словарь стиля для каждой страницы и разместил его рядом со страницей в проекте WP7.

  3. Я связал файл словаря с проектом WP8. Я сделал то же самое для кода за файлом.

  4. В моих XAML файлы, которые я связала локальный файл словаря с стилей, используемых на этих страницах:

  5. С этим решением я достиг минимального дублирования кода, со всеми стилями еще в одном месте, и единственный отличающийся код (XAML), размещенный там, где он действительно принадлежит.

Конечное дерево папок выглядит примерно так:

Solution 
|-- Common Library 
| |-- Views 
|   |-- Page1 
+-- WP7 
    |-- Views 
     |-- Page1 
      |-- Page1.xaml (Windows 7 specific markup) 
      |-- Page1.xaml.cs (code behind file) 
      |-- Page1.styles.xaml (common styles shared between wp7 and wp8 apps) 
+-- WP8 
|-- Views 
     |-- Page1 
      |-- Page1.xaml (Windows 8 specific markup) 
      |-- ->Page1.xaml.cs (linked from the WP7 project) 
      |-- ->Page1.styles.xaml (linked from the WP7 project)