Было интересно, есть ли у кого-то хорошее представление о том, как с этим справиться.Многоцелевое приложение WP7.1/WP8 с Windows Phone Toolkit (Panorama/LongListSelector)
В WP7.1 мы можем использовать отличный Windows Phone Toolkit, чтобы включить некоторые полезные элементы управления, такие как LongListSelector и Panorama. Они являются частью сборки Microsoft.Phone.Controls.Toolkit
.
В WP8 нам не нужен набор инструментов для этих двух элементов управления, поскольку они являются частью официальной сборки Microsoft.Phone.Controls
.
У меня есть многоцелевое приложение, так что у меня есть два проекта телефона, WP71 и WP80, где я связываю файлы в WP80 с файлами в WP71.
Это отлично работает до Я пытаюсь использовать элемент управления Panorama или LongListSelector на странице XAML. В проекте WP80, если я ссылаюсь на WP80 DLL набора инструментов телефона, он не включает в себя два вышеупомянутых элемента управления, потому что, удивляясь, они уже присутствуют.
Проблема заключается в том, что WP71 нуждается в декларации пространства имен в верхней части XAML, а пространство имен отличается для обоих проектов.
WP71:
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
<toolkit:Panorama />
WP80:
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
<phone:Panorama />
Я не могу строить проекты, потому что каждый проект думает пространства имен некорректно, если я просто использовать один, потому что они должны указывать различные сборки.
Я не думаю, что могу использовать константы компиляции в своем XAML, иначе это будет исправление.
Мое обходное решение изначально предназначалось для ссылки на старую WP71 DLL в моем проекте WP80. Но другие сторонние библиотеки связывают с официальной 8.0 SDK DLL (Caliburn, в моем случае), поэтому это вызывает проблемы.
Как я могу решить эту рассол? Единственная идея с моей головы заключалась в том, чтобы прибегнуть к коду, чтобы создать экземпляр элемента управления :(Есть ли лучший способ?
Yah, подход «Ex», вероятно, лучший. Для 'LongListSelector' вам нужно создать новый вид, потому что кажется, что он работает по-другому. В WP7 он по умолчанию использует группы, но не в WP8, поэтому вам нужно изменить свойство. – kamranicus
+1 вот что я сделал в конце. Просто нужно было написать 'public class Panorama: Microsoft.Phone.Controls.Panorama {}' и 'public class PanoramaItem: Microsoft.Phone.Controls.PanoramaItem {}', и это было сделано. –