Win UI 3で釣りアプリを開発しました。

Win UI 3で釣りアプリを開発しました。

釣りを過小評価しないでください天才的なアイデアはキーボードから生まれるものではない仕事でブロックに遭遇した時、仕事に投入すればするほど解決策が見つからない。この時、スクリーンから目を離して、シャワーを浴びながら小さなアヒルを遊んでいる時、ぼんやりとしながら窓の外を見ている時、寝ながらお腹を押さえている時、問題解決の霊感が突然頭の中に落ちた。

最后更新 2021/12/16 20:51
dino.c
预计阅读 5 分钟
分类
.NET
标签
.NET C# WinUI 3

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の理解を深めるには、以下のリンクを参照してください。

  1. Windows UI 库 (WinUI) - Windows apps
  2. Windows UI 库 (WinUI) 3 - Windows apps
  3. 通过 Windows 应用 SDK 生成桌面 Windows 应用 - Windows apps
  4. Windows 应用 SDK 的稳定通道发行说明 - Windows apps
  5. microsoftmicrosoft-ui-xaml Windows UI Library_ the latest Windows 10 native controls and Fluent styles for your applications
  6. microsoft-ui-xaml_roadmap
  7. WinUI 3 试玩报告
  8. 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”クリエイティブ·コモンズ·ライセンスでライセンスされています。

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2026/04/22

バージョン別の. NETサポート状況(250 7 0 7更新)

仮想マシンとテストマシンを使用して、各バージョンのオペレーティングシステムの. NETサポートをテストします。オペレーティングシステムのインストール後、対応するランタイムを測定し、スターダストエージェントをパスとして実行できます。

继续阅读
同分类 / 同标签 2026/02/07

AOTの使用経験

プロジェクトの最初から、新しい機能が追加されたり、新しい構文が使用されたりするたびに、AOTリリーステストを行うという良い習慣を身につける必要があります。

继续阅读