XAML: Unterschiede in der Namespace-Deklaration Phone / Store Apps

Wie ich gerade feststellen musste, arbeiten in Visual Studio 2012 die XAML-Editoren/-Compiler für WinStore-Apps und WinPhone 8-Apps unterschiedlich, wenn es um die Referenzierung von Klassen im eigenen Assembly geht. Während bei Phone-Apps die Angabe xmlns:local=“clr-namespace:JochenLinnemann.DiceRoller“ durchaus akzeptiert wird, muss es bei Store-Apps xmlns:local=“using:JochenLinnemann.DiceRoller“ heißen.

Simple Dice Roller goes Mobile

Es ist soweit, meine erste WinPhone App ist zur Zertifizierung eingereicht!

Während der Simple Dice Roller einen Aufwand von gut einer Woche erfordert hatte, war der Mobile Dice Roller in etwa einem Tag fertig und das samt deutscher Lokalisierung. Viel von der Funktionalität der WinStore App konnte ich in eine Portable Library auslagern, ohne großartig Änderungen am Bestandscode durchführen zu müssen (portable Bibliotheken unterstützen nur eine Teilmenge der .NET-Funktionalitäten der verschiedenen Plattformen – den kleinsten gemeinsamen Nenner). Lediglich die Oberfläche musste ich neu entwerfen und dies fiel wegen der deutlich einfacheren Struktur einer Phone-Anwendung auch entsprechend leichter als bei den vielen Möglichkeiten einer Store-Anwendung. Die neuen Strukturen ermöglichen es nun, auch einfach eine deutsche Version des Simple Dice Rollers bereitzustellen, ohne dabei dort einen eigenen Weg gehen zu müssen.

Sobald der Simple Dice Roller: Mobile Edition zertifiziert und veröffentlicht wurde, werde ich hier den entsprechenden Link bereitstellen.

Erste Schritte: Windows Phone 8 Apps

Der Einstieg in die Windows Phone App-Programmierung fiel mir sehr viel einfacher als in die Windows Store App-Programmierung, was aber sicherlich an einer gewissen Ähnlichkeit liegt. Prinzipiell geht es auch hier um Seiten, zwischen denen navigiert wird. Interessant fand ich den relativ ähnlichen Ansatz zur Settings-Speicherung – beide arbeiten mit Dictionaries, die automatisch gespeichert werden.

Windows Store App

Object obj;
ApplicationDataContainer roamingSettings = ApplicationData.Current.RoamingSettings;
roamingSettings.Values.TryGetValue("Key", out obj);
...
roamingSettings.Values["Key"] = obj;

Windows Phone App

Object obj;
IsolatedStorageSettings appSettings = IsolatedStorageSettings.ApplicationSettings;
appSettings.TryGetValue("Key", out obj);
...
appSettings.Values["Key"] = obj;