Лучший ответ: вы не хотите, чтобы одно и то же приложение работало в стиле Windows 7 и Windows 8 Metro. Пользовательский интерфейс, который работает лучше всего для мыши и клавиатуры (Windows 7), не будет работать хорошо для презентации с первого касания и наоборот. Важно переоценить пользовательский интерфейс для двух разных миров.
Тем не менее, у вас есть 2 варианта, если вы хотите поделиться большим количеством кода:
1) Написать это в основном в JavaScript / HTML5. Это позволит вам повторно использовать многие активы (особенно части бизнес-логики).
2) Запишите это в (рабочий стол) Silverlight. Silverlight XAML наиболее близок к Windows XAML. WPF еще дальше и потребует доработки позже.
В любом случае вы должны смотреть и следовать принципам, используемым при написании кроссплатформенного кода. Поймите зависимости платформы и изолируйте их за пределами косвенного обращения. Вы хотите локализовать весь код, который придется изменить. Например, вы не хотите, чтобы вызовы .Net System.IO.File API, которые, как вы знаете, должны были измениться, на вызовы Windows.System.Storage, разбросанные по всему коду. Вместо этого вы хотите, чтобы он был локализован в одной функции, которую можно изменить позже.