PR

WinUI 3 試してみた

C#

またまたWindowsのアプリ開発回りが変わりそうなのでとりあえず環境構築とテストアプリを実行してみた。

スポンサーリンク

使用した環境

  • Windows11 Pro 21H2
  • AMD Ryzen 5 3600
  • RAM 16.0GB
  • Visual Studio2022

まずはアップデート

Windows App SDK 用のツールをインストールする - Windows apps
Windows App SDK を使用して Windows 用アプリを開発するための適切なツールをインストールし、開発用コンピューターを構成します。

上記サイトを見ながら操作を行った。

Visual Studio 2022の更新

まずは更新作業から
Visual Studio Installerを起動し更新をクリックするだけ。
この時の最新バージョンは17.1.5。

Visual Studio Installer の画面

Visual Studioの構成を変更

ワークロードタグのデスクトップとモバイルから下記をチェックする

  • .NET デスクトップ開発
  • C++によるデスクトップ開発
  • ユニバーサルWindowsプラットフォーム開発

次に画面右側インストールの詳細の下記項目をチェックする

  • C++によるデスクトップ開発を展開し[Windows アプリ SDK C++ テンプレート]をチェック。
  • .NET デスクトップ開発を展開し[Windows アプリ SDK C# テンプレート]をチェック。
  • ユニバーサル Windows プラットフォーム開発を展開し[C++(v143) ユニバーサル Windows プラットフォーム ツール]をチェック。

変更をクリックする。

早速新しいプロジェクトを作成してみる

Visual Studio 2022を起動後新しプロジェクトの作成を選択。
テンプレート選択で言語C#、すべてのプラットフォーム、WinUIで検索。

今回は、[空白のアプリ、パッケージ化(デスクトップのWinUi3)]を選択。

適当なプロジェクト名をつけて[作成]。

何も操作せずにとりあえず実行してみた。

超シンプルなUIのアプリが起動する

ボタンをクリックするとボタンの文字がClickedになるだけの超シンプルなアプリが起動する。

もう少しいじってみた

基本的な部分は多分UWPと変わらないようなイメージ。
XamlもUWPと同様の書き方で問題なく動作する。x:Bindも試したが問題ない。
UWPからの移行がほぼコピペだというから多分ほとんどの部分で問題なく動作するようだ。
試しにUWPから移植を試してみたが、一部機能が(今回はCameraCaptureUI)サポートされていないようだった。

サポートに関する詳細は下記参照。

UWP から WinUI 3 への移行時にサポートされる機能 - Windows apps
WinUI 3 と Windows App SDK は新しいテクノロジであり、UWP と比較すると、サポートされていない機能がいくつかあります。 このトピックでは、移行を試みる前にサポートされる機能について説明します。

まとめ

まだ表面的な部分しか触れていないが、UWPとほぼ同環境と考えれば開発自体新たに覚えることも少なくありがたい。
WinFormは調べるのに苦労しなかったがUWPになってからは公式ドキュメントがメインになるくらい一般開発者が少ない印象。もう少し開発者が増えてくれると調べるときに助かるのだがw。

!!いきなり問題発生!!

試しに既存アプリのWinUI3移植を試していたのだが、どうにもうまくいかない部分がある。
それは、Converter。x:Bind で値から文字に変えたりするあれが使えない。
いろいろと調べて試してみたがどれもダメだった。最悪プロパティを増やして対応することはできるけど、何ともスマートじゃない。

“WinUI3 x:Bind IValueConverter”で検索すると同じ症状が出ているが、解決策は見つけられなかった(英語読めないだけ?)

Can't set x:Bind.Converter to StaticResource in a Window · Issue #6369 · microsoft/microsoft-ui-xaml
Describe the bug Window doesn't have a Resources property, so you set resources typically in the root of the Window cont...

Page.Resourceも使えない。(そもそもPageからWindowに変わっている)
ResourceDictionaryの書く場所が変更になったようだ。

ユーザー インターフェイスの移行 (WinUI 3 を含む) - Windows apps
このトピックでは、(../../../winui/index.md) への移行を含む、ユーザー インターフェイス (UI) の移行方法を説明します。

まだまだ発展途上なのか、自分の能力不足なのかイマイチわからん。

とりあえず小規模なアプリを移植してみたが、イマイチ動作が不安定のようだ。デバッグが面倒なので今回はここまでにする。(現状UWPで問題なく動作しているのでそこまでやる気がない)

コメント

タイトルとURLをコピーしました