XAML clr-namespace - Inkompatibilität verwenden?

8

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.

    
jlo 06.05.2013, 19:43
quelle

2 Antworten

1

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.

    
Peter 26.02.2014 00:15
quelle
0

Ich habe gerade ein wenig in Windows Phone 8 getan und obwohl der Editor es standardmäßig in clr-namespace konvertiert, kannst du es trotzdem in using ändern und es wird funktionieren.

    
Kenneth 06.05.2013 21:13
quelle