WinUI 3は、Microsoft のWindows 10以降で利用可能な新しいUIフレームワークです。
もともとWinUIは、ストアアプリ専用のフレームワークで高機能なものでした。ところが一方で、制限が多くデスクトップアプリの代替になるほど自由度はありませんでした。
第3世代となるWinUI 3ではデスクトップアプリの新たなフレームワークとなるべく、多くの制限が取り除かれています。

WinUIとWPFの違い

WPFが.NET Frameworkの一部であるのに対し、WinUIはC++/COMといったネイティブコードで記述された高速なUIフレームワークです。しかし、XAMLを利用した画面定義を行なうUIフレームワークである点においては、WPFとWinUIは同じです。WinUIを.NETから操作する場合は.NETのオブジェクトとして操作可能であり、画面デザインやビジュアルツリーの操作などのWPFでのノウハウや考え方の多くをそのまま活かすことが出来ます。

シンプルな画面などでは、高速なWPFといって差し支えのないものです。しかし、.NETに閉じたUIフレームワークではないため、細かいコンセプトの違いなどがあり、少し込み入ったことをすると、その差を意識することになります。
たとえば、WindowはDependencyObjectではありません。もちろんFrameworkElementでもありません。そのため VisualTree上にも現れず、DataContextを持つこともできません。
代替手段はあり、 DataBindingの起点をWindowではなくルート要素のGridやStackPanelなどに変更したり、DataContextを介さないx:Bindによる静的なバインディングによって解決することができます。

WinUI 3を選択する理由

現時点のWindowsデスクトップフレームワークにおいて、利用実績が多く安定しているのはWPFといえるでしょう。最も普及し安心して利用できる選択肢であることについては疑う余地もありません。

しかし、WPFは基本となる設計が古いです。機能が不必要に多く複雑であったり、パフォーマンスの問題などで後になってから肉付けされ、作り替えられた箇所も多くあり、一貫性を損なわれているところもあります。

WinUI 3はこれらの諸問題を踏まえ、利用頻度の低いものを省略して不要な複雑化を取り除いています。また、コンテナとなる部品では最初から標準的に仮想化を前提とするなど、より現実的なアプリケーション開発に向けたプラットフォームとなっています。さらに、フレームワーク自体がネイティブコードで記述されており、多くのケースで高速に動作します。

安定性や利用実績などは今後の発展を待たれる面がありますが、頻繁にアップデートされており、不具合も少なくなってきています。 新たなシステム開発ではWinUI 3を選択肢として考えても良いタイミングになってきているのではないでしょうか。

WinUI 3導入をご検討中の方へ

WinUI 3の導入に興味がある方・導入をご検討中の方は、是非弊社までお問い合わせください。
WinUI 3 導入支援 (弊社サービス紹介ページ)