Beim Teilen von Code zwischen WinRT und WP8:
WP8 möchte:
%Vor%WinRT möchte:
%Vor%Das bedeutet, dass Sie XAML-Code - wie Benutzersteuerelemente - nicht zwischen Projekten teilen können, wie wir es in WP7, Silverlight, WPF
konnten Hat jemand einen Workaround gefunden? XmlnsDefinition
-Attribut sah aus, als könnte es das beheben, aber MS hat es aus WinRT entfernt.
Dieses Problem wird zusammen mit den begrenzten Problemumgehungen hier ausführlich erläutert: Ссылка
- XAML unter Windows Phone 8 und XAML unter Windows 8 ist nicht binärkompatibel. Wie bereits erwähnt, verwenden Sie die Steuerelemente, mit denen Sie Ihre Benutzeroberfläche erstellen auf jeder Plattform sind ähnlich. Sie sind ähnlich in Name, Verhalten und die Programmierschnittstellen oder die Syntax, die sie bereitstellen. Sie sind es jedoch speziell für jede Plattform implementiert.
- Namespacepräfixe unterscheiden sich in XAML für Windows Phone 8 und XAML für Windows 8. Dies wird anhand der Namespaces veranschaulicht in einer Basisseite enthalten, wenn Sie es von Grund auf neu erstellen. [...] Vergleichen Sie diese Namespace-Importe, können Sie die subtile aber sehen signifikanter Unterschied in der Art, wie ein Namespace importiert wird. In Windows Telefon 8, importierte Namespaces haben das Präfix clr-namespace :. Im In Windows 8 importierte Namespaces werden mit: vorangestellt. Das macht es Es ist schwierig, denselben XAML zu verwenden, es sei denn, Sie können Namespaces mit importieren die gleiche Syntax.
- XAML unterstützt keine bedingte Kompilierung. Wie in Bedingte Kompilierung mit Präprozessordirektiven gezeigt, Bedingte Kompilierung ist eine nützliche Technik zur Handhabung von Plattformen Unterschiede durch Kompilieren in einem Codepfad, der auf ein bestimmtes Ziel ausgerichtet ist Plattform und einen anderen Code-Pfad beim Kompilieren für eine andere Plattform. Dies macht es schwierig, eine XAML-Seite zwischen beiden Plattformen zu teilen, weil Sie das vorherige Problem nicht einfach nur bedingt angehen können Kompilieren in Namespace-Imports, die CLR-Namespace für Windows verwenden Telefon 8 und verwenden: für Windows 8.
Dies sollte nicht als ein vollständiger Roadblock für das Teilen zwischen angesehen werden Windows Phone 8 und Windows 8. Die klare Anleitung lautet: Design und Erstellen Sie Ihre Benutzeroberfläche separat für jede Plattform, einschließlich des Designs Richtlinien für jeden. Es ist technisch möglich, diese zu umgehen Hindernisse. Sie können Ihre Benutzeroberfläche während der Seiteninitialisierung von erstellen Code. Sie können plattformspezifische XAML zur Laufzeit aus Ressourcen laden und injiziere es als String in die Seite. Jedoch keines von diesen Techniken skalieren und sie machen den Aufbau Ihres Kern-Asset-wie Ihre App sieht für Ihren Benutzer an - eine langwierige und fehleranfällige Aufgabe. Dein Code Sharing Investment wird Ihnen eine viel größere Rendite weiter unten geben Ihr App-Stack, indem Sie App-Logik, Datenmodelle, View-Modelle, usw.
[...] Eine Technik zum Teilen der Benutzeroberfläche, die unter bestimmten Umständen nützlich sein kann besteht darin, Teile Ihrer Benutzeroberfläche in Benutzersteuerelementen zu isolieren und zu teilen jene. [...] Aufgrund der im Zu Beginn dieser Diskussion ist die Technik auf den Basisbenutzer beschränkt Kontrollen. Zusätzlich zu diesen Einschränkungen sollten Sie die Richtlinie, um Ihre Benutzererfahrung immer an das Ziel anzupassen Plattform. Die Freigabe von XAML-Steuerelementen ist möglich, aber begrenzt. Eine gute Kandidat für diese Art des Teilens ist die UI, die Sie in einem anzeigen möchten Popup-Fenster oder andere Widgets, die Sie freigeben möchten, weil sie besteht in der Regel aus grundlegenden UI-Elementen ohne komplexes XAML und mit einfachem Styling.
Tags und Links silverlight windows-phone-8 windows-phone-7 xaml windows-runtime