🪟

WinUI3 で Windows Application を作ろう

2023/12/02に公開

XAML戦隊WinUIジャー

XAML、eXtensible Application Markup Language。燃えるハートでクールに生成される無数のコード達。
彼らの任務は、デザインに侵入した宇宙の犯罪者達と戦い、プログラマとデザイナーの分業と安全を守ることである。

君のハートに、ターゲットロック!

WinUI 3 とは

WinUI 3 is the native UI platform component that ships with the Windows App SDK (completely decoupled from Windows SDKs).

https://learn.microsoft.com/en-us/windows/apps/winui/winui3/

ということで、ネイティブUIプラットフォームコンポーネント郡だそうです。

WinUI 3 は現在 GitHub 上で開発されており、まだ安定版ではないようです。
WinUI のテンプレートを Visual Studio に追加することでプロジェクトが作成できます。
WinUI 3 は C# のためのライブラリと C++ のためのライブラリがあるようですが、よほどのことがない限り C# で十分でしょう。C++は地獄なのでやめましょう。

XAML ってなに?

XAML is a declarative markup language. As applied to the .NET programming model, XAML simplifies creating a UI for a .NET app. You can create visible UI elements in the declarative XAML markup, and then separate the UI definition from the run-time logic by using code-behind files that are joined to the markup through partial class definitions. XAML directly represents the instantiation of objects in a specific set of backing types defined in assemblies. This is unlike most other markup languages, which are typically an interpreted language without such a direct tie to a backing type system. XAML enables a workflow where separate parties can work on the UI and the logic of an app, using potentially different tools.

https://learn.microsoft.com/en-us/dotnet/desktop/wpf/xaml/?view=netdesktop-8.0

うーん、難しい言葉使わないで。
「表示される UI 要素を宣言型 XAML マークアップで作成し、...、UI 定義をランタイム ロジックから分離させることができます。」だけ分かればまあ十分そう。
XAML がパースされて最終的にコードを生成するわけです。
XAML のパースに成功して、なおかつコード生成にも成功した状態で生成したコードからエラーが出たときにデバッグが困難すぎてガン萎えします。
XAML を書くときは、こまめにビルドしてエラーがないか確かめながらかかないと原因不明のエラーを大量の編集箇所から特定することになります。

使ってみた感想

WinUI 3 を使ってみて感じたことは、リッチなコンポーネントがライブラリにたくさんあるのがありがたいということ。XAMLが読みにくくて最初は辛かったけど、慣れたらそうでもないということ(ただし間違ったXAMLを書いたときに出てくる Unhandled Exception、おまえだけは許さん)。

Webアプリを作るよりは簡単にいい感じのものが出来上がるので、楽しいです。

WinUI 3 tips

WinUI 3 Gallary

WinUI 3 Gallary は Microsoft Sotre から入手できる WinApp です。
WinUI 3 が備えるコンポーネント郡のドキュメントや Examples などがわかりやすくアプリになったものです。
ここからコードをコピペしていじるだけで大体なんとかなります。
(ちなみにタイポの修正で PR を出したことがあります。)

CommunityToolkit

WinUI 3 のコンポーネントだけでは満足できなくなった場合に便利なのが Windows Community Toolkit です。
たくさんのリッチなコンポーネントや拡張などが存在しており、ながめているだけでも楽しいです。
こちらにも Gallary が存在します。

まとめ

WinUI 3 を使えばなんかそれっぽい WinApp が簡単(嘘)に作れます!
みんなも WinUI 3 を使って XAML で消耗しよう!

https://learn.microsoft.com/en-us/windows/apps/winui/winui3/create-your-first-winui3-app

Discussion