Es gibt einige Problem-Brocken im Zusammenhang mit WinJS, über die man früher oder später stolpern kann. Ich werde hier nach und nach wichtige Facts hinzufügen.
Promise
Bevor man startet, muss man Promises verstehen. Ein guter Artikel findet man hier.
Single Page Application (SPA)
Es empfiehlt sich, ein WinJS Metro App als Single Page Application zu entwerfen. Beim Navigieren werden die Seiten in die default.html-Seite geladen. Dabei werden .css und .js Dateien geladen und nicht entladen. Deshalb ist es speziell für .css-Dateien wichtig, dass man nicht gleiche Klassennamen verwendet. Abhilfe findet man hier: http://kraigbrockschmidt.com/blog/?p=779
Controls in ListView-Items und FlipView-Items
Damit z.B. ein Button in einem ListViewItem den Click-Event erhält und nicht eine Navigation zur Detail-Seite erfolgt muss man dem Button die Klasse win-interactive hinzufügen! Also etwa:
<button class="win-interactive">In den Warenkorb</button>
Html-Text in Resourcen
In resources-Files kann man durchaus auch Html-Tags hinterlegen. "HeroStep1": " <a href='http://www.jazzvinyl.ch/'>www.JazzVinyl.ch</a>." Das Binding der Resourcen erfolgt dann an das innerHTML-Property:
<p data-win-res="{ innerHTML: 'HeroStep1' }">