code it

Martins Tech Blog

Databinding mit der Windows Phone Application Bar

Für Silverlight-Anwendungen hat sich das MVVM-Pattern sehr gut bewährt, bietet es doch einige Vorteile. Und viele Entwickler machen sogar einen Sport daraus, die Trennung zwischen View und ViewModel so konsequent durchzuziehen, dass überhaupt kein Code mehr in der Codebehind-Datei steht, denn Commands im ViewModel sind wesentlich besser testbar als Code in irgendwelchen Codebehinds. Entwickelt man für Windows Phone, so stößt man spätestens dann an seine Grenzen, wenn man die Application Bar verwenden möchte und die Buttons oder Menüeinträge an Commands aus dem ViewModel binden möchte. Den Grund dafür findet man auch relativ schnell in der MSDN.

Because the Application Bar is not a Silverlight control, it does not support some of the common control features, such as data-binding.

Damit ist man zunächst einmal darauf beschränkt, die Events wieder in der Codebehind-Datei abzufangen und dann gleich dort zu verarbeiten oder an das ViewModel weiterzugeben. So richtig schön sind beide Möglichkeiten nicht.

Mehr...

AdControl ohne Werbung

Das Microsoft Advertising SDK bietet auf einfach Art und Weise die Möglichkeit, in die Apps, die man kostenfrei im Marketplace anbietet oder in Apps im Trial-Mode Werbung einzublenden. Im einfachsten Fall befolgt man die Anleitung, und hat mit wenigen Schritten Erfolg. Was tut man aber, wenn man trotz der Anleitung keine Werbung sieht?

Ist das AdControl auf der Seite auch eingebunden?

Um das AdControl einzubinden ist eine Referenz auf Microsoft.Advertising.Mobile.UI notwendig. Die entsprechende Assembly liegt dem SDK bei. Beim Einbinden muss man darauf achten, die Eigenschaften Width und Height auf die Werte zu setzen, die man bei der Einrichtung des Werbeblocks angegeben hat.

<UI:AdControl Height="80" Width="480" ApplicationId="test_client" AdUnitId="Image480_80"/>

Abgesehen davon sollte man auch ApplicationId und AdUnitId setzen, aber das bemängelt das Control ja direkt als Exception. Zu Testzwecken kann man die Applikations-Id "test_client" und die Werbeblock-Id "Image480_80" (alternativ: "TextAd" oder "Image300_50") verwenden. Nun sollte ein Testbild angezeigt werden. Für das Release sollte man hier dann auf jeden Fall seine registrierten Ids eintragen.

Stimmen die Voraussetzungen?

Wird immer noch nichts angezeigt, sollte man noch einen Blick in die WMAppManifest werfen. Damit das Control funktioniert, sind mindestens folgende Einträge notwendig:

<Capabilities>
  <Capability Name="ID_CAP_NETWORKING" />
  <Capability Name="ID_CAP_MEDIALIB" />
  <Capability Name="ID_CAP_PHONEDIALER" />
  <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
  <Capability Name="ID_CAP_IDENTITY_USER"/>
</Capabilities>

Wozu das AdControl die Telefonie-Voraussetzung braucht ist mir zwar nicht klar, aber es ist so. Bei mir war das Problem im übrigen der fehlende Eintrag für User-Identity.

Exam 71-599: Designing and Developing Windows Phone Applications

Es ist nun schon ein paar Monate her. Im April hab ich bei den Beta-Prüfungen für Windows Phone Development mitgemacht. Das Ergebnis hat ein paar Wochen auf sich warten lassen, aber letztenendes war das Ergebnis dann doch ein "Passed".

Interessant wurde es danach: Für den MCPD in Windows Phone Development benötigt man zusätzlich als Voraussetzung noch den MCTS "Silverlight 4 Development" (70-506) als auch den MCTS "Accessing Data with .NET Framework 4" (70-516). Erstere hatte ich ja bereits, zweitere kam mit der Upgrade-Prüfung von Webdeveloper 3.5 auf 4 mit - dachte ich zumindest, denn bei der Upgrade-Prüfung wurde mit automatisch ein MCTS für "Data Access in .NET Framework 4" gutgeschrieben.

Wie sich dann herausstellte musste ich Microsoft erst an der Hotline fragen, ob "Accessing Data" das gleiche ist wie "Data Access". Die interne Klärung hat aufgrund der Urlaubszeit dann auch ein paar Wochen gedauert. Letztenendes ist der Status aktuell wohl so, dass beides identisch ist, aber dieser Pfad bisher nicht vorgesehen war. Auf dem Papier und in den Mails die ich von Microsoft erhalten habe, habe ich nun wohl schon den MCPD-Status in Windows Phone Development, aber im offiziellen Transcript wird dies erst ab Jahresende zu sehen sein.

[edit 12.12.2011] Seit heute ist der MCPD Status "Windows Phone Developer" auch ganz offiziell im Transcript. Microsoft hat sein Versprechen also gehalten. Damit dürfte dann wohl auch der Weg für alle anderen geebnet sein, die den gleichen Pfad wie ich nehmen.