Я не вижу лучшего подхода, чем частичный. И вы всегда можете использовать C ++ / CLI (он же управляемый C ++) для преодоления любых трудных пробелов.
Я большой поклонник WPF / Silverlight, поэтому я определенно рекомендовал бы его выше Winforms, что является хорошей, но гораздо более устаревшей технологией. Пользовательские элементы управления и привязка данных значительно облегчили долгосрочную разработку в мире WPF.
Слухи о гибели WPF - просто чушь. Да, Microsoft сократила размер команды WPF - главным образом потому, что WPF стал зрелым и стабильным. Они хотят разместить больше ресурсов в областях браузера по стратегическим причинам; не уверен, почему кто-то приравнивает это к тому, что они убивают WPF.
Я имел большой успех в использовании WPF для упаковки или взаимодействия с устаревшим кодом, написанным на C ++. Основная проблема, с которой я столкнулся, это когда у вас есть уровни управляемого и неуправляемого кода, он может быть немного сложным и сложным для отладки. Возможно, вы захотите написать обратный вызов пользовательского загрузчика сборок, чтобы узнать больше о том, что не удается загрузить и почему, особенно если у вас есть устаревшее приложение, загружающее C ++ DLL, которая в конечном итоге запускает управляемый код.