1. 釣りアプリを作りました。
私は簡単なアプリを作りました:釣り。


上の図に示すように、このアプリにはボタンが1つしかなく、クリックしてWindows Updateを開始するふりをすると、ユーザーは素直に魚を捕まえることができます。
釣りを過小評価しないでください天才的なアイデアはキーボードから生まれるものではない仕事でブロックに遭遇した時、仕事に投入すればするほど解決策が見つからない。この時、スクリーンから目を離して、シャワーを浴びながら小さなアヒルを遊んでいる時、ぼんやりとしながら窓の外を見ている時、寝ながらお腹を押さえている時、問題解決の霊感が突然頭の中に落ちた。
だから私は恥知らずにこのアプリを最も生産的な仕事カテゴリーに投稿し、マイクロソフトはそれを通過し、今ここでこのアプリをダウンロードできます:
https://www.microsoft.com/zh-cn/p/loaf-a-winui3-app/9ndj3q12nrrm

タイトルが示すように、これはWinUI 3アプリです。
2. Win UI 3とは?

WinUI 3は、Windows App SDKに付属している、WindowsデスクトップアプリケーションおよびUWPアプリケーション用のネイティブユーザーエクスペリエンス(UX)フレームワークです。簡単に言えば、Win UI 3はUWPのUI層をWin 32 Windowsアプリに分離します。Win UI 3の理解を深めるには、以下のリンクを参照してください。
- Windows UI 库 (WinUI) - Windows apps
- Windows UI 库 (WinUI) 3 - Windows apps
- 通过 Windows 应用 SDK 生成桌面 Windows 应用 - Windows apps
- Windows 应用 SDK 的稳定通道发行说明 - Windows apps
- microsoftmicrosoft-ui-xaml Windows UI Library_ the latest Windows 10 native controls and Fluent styles for your applications
- microsoft-ui-xaml_roadmap
- WinUI 3 试玩报告
- WinUI 3 Preview 3 发布了,再一次试试它的性能
長い待ち時間の後、最近、Win UI 3は静かに正式版をリリースしたようです。大規模な宣伝もなく、リリースされたばかりのVisual Studio 2022に統合されておらず、まともなメールやニュース、ブログも見られず、ドキュメントをチェックすると、Windows App SDKと一緒にリリースされたようです。要するに、WinUI 3のバージョン1.0が使用できます。ゲームをプレイした後、私は長い間それを待っていましたが、しばらくの間Win UI 3にアプリを移行できないと感じました。既存のアプリケーションを操作できないので、Win UI 3をもっと深く試すために、この小さなアプリケーションを“魚を捕まえる”ことにしました。
3. 開発プロセスの概要
以下は開発過程です。全体的に楽しいですが、課題もたくさんあります。
首先,如果要使用 Visual Studio 2022 开发 WinUI 3 的 C# App,需要下载 Visual Studio 2022 的扩展:WindowsAppSDK.Cs.Extension.Dev17.Standalone.vsix。安装扩展后才可以创建 WinUI 3 项目。

C++またはVisual Studio 2019用の拡張機能は、それぞれのダウンロードリンクを以下のドキュメントにあります。
Windows 应用 SDK 的稳定通道发行说明 - Windows apps
プロジェクトを作成した後、Win UI 3にデザインビューがないことがわかります(今後もないはずです)。その場合は、UWPプロジェクトを作成し、UWPプロジェクト内のXAMLデザインをWin UI 3プロジェクトにコピーするのが最善です。
迁移过程中需要将大部分 Windows.* 命名空间替换成 Microsoft.*。不过 Win2D 里还在用 Windows.* 命名空间,所以搞得有些混乱。
然后就是引用各种包,微软自己管理的 UWP 最常用的包大致上都有对应的 WinUI 版本,例如 Microsoft.Toolkit.Uwp.UI 替换为 CommunityToolkit.WinUI.UI,而 Win2D.uwp 替换为 Microsoft.Graphics.Win2D。
UWPの開発経験のほとんどはWin UI 3で使用でき、この小さなアプリで遭遇した最大の問題はウィンドウ管理です。Win UI 3のWindows APIはまだうまくいかないので、タイトルの変更も面倒で、数行のコードが必要です。
namespace SampleApp
{
/// <summary>
/// An empty window that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainWindow : Window
{
private AppWindow m_appWindow;
public MainWindow()
{
this.InitializeComponent();
// Get the AppWindow for our XAML Window
m_appWindow = GetAppWindowForCurrentWindow();
if (m_appWindow != null)
{
// You now have an AppWindow object and can call its methods to manipulate the window.
// Just to do something here, let's change the title of the window...
m_appWindow.Title = "WinUI ❤️ AppWindow";
}
}
private AppWindow GetAppWindowForCurrentWindow()
{
IntPtr hWnd = WinRT.Interop.WindowNative.GetWindowHandle(window);
WindowId myWndId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(hWnd);
return AppWindow.GetFromWindowId(myWndId);
}
}
}
フルスクリーンに入るコードもUWPとは異なります:
///进入全屏
m_appWindow.SetPresenter(AppWindowPresenterKind.FullScreen);
///退出全屏
m_appWindow.SetPresenter(AppWindowPresenterKind.Default);
而且全屏和 UWP 还不一样,没法按 Esc 键退出全屏,也没有了屏幕顶部隐藏的标题栏。所以要自己捕获全局的 Esc 键事件再调用代码退出全屏(至于平板状态怎么退出全屏我就不知道了)。
もう一つ、Win UI 3とUWPのスタイルは少し異なります。例えば、ProgressRingのスタイルはWindows 8 以来のいくつかのドットサークルのスタイルではありません。幸い、UWPのスタイルは簡単な変更でコピーできます。
虽然开发过程遇到很多问题,对这个小 App 来说还算轻松愉快。有趣的是,当遇到 WinUI 3 没提供想要的 API 的时候可以直接调用 Win32 API 实现需求。更有趣的是,这些 Win32 API 有些有效,有些无效。
すべてのコードが完了したら、最後のステップはストアにリリースすることです。幸いなことに、リリースプロセスはUWPと同じで、アプリはストアでダウンロードできます。
4. 直面した問題
デザインの欠如は深刻な問題です。少なくともホットロードが利用可能なので、私はそれを受け入れることができますが、初心者には優しくありません。
文档混乱,几乎所有 UWP 和 Windows App SDK 的文档合并了,这就要命了,真的要命,例如 WinUI 3 的文档有指向 Mica 的导航,明明 WinUI 3 都不支持 Mica。现在在 https://docs.microsoft.com/en-us/windows/apps/ 页面里甚至找不到 UWP 的入口,总之无论 UWP 还是 Windows App SDK 的文档都一片混沌。
デモは役に立たない、UWPのデモをくれても、Windows 8のデモをくれても、私には多すぎる。
Windows App SDKという名前自体が悪いですが、すべてのエンジンはWindowsのものをたくさん検索しますが、Windows App SDKはありません。
Background AcrylicとRevealBoraderBrushがなく、Win 2 DにはCanvasAnimated Controlがなく、UWPからWin UI 3への移行が難しくなっています。
開発からリリースまでの道のりには、さまざまなバグや小さな問題がありました。
5. 最後に、
Win Forms、WPF、Silverlightの導入は非常に簡単でしたが、MicrosoftのUIはますます難しくなり、Win UI 3は最も難しいものでした。Win UI 3はUWPに比べて大きな利点があるはずですが、今は新しいバージョンを待つことをお勧めします。小さなアプリケーションをプレイし、生産環境に注意してください。
WinUI 2はますます楽しくなっているようですし、WinUI 2をプレイしながらWinUI 3の新しいバージョンを待つこともできます。
6. ソースコードソース
https://github.com/DinoChan/Loaf
アーティスト:Dino. C
出典www.cnblogs.com/dino623/p/developing_an_app_with_winui3.html
著作権:この記事は“CC BY 4.0”クリエイティブ·コモンズ·ライセンスでライセンスされています。