しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

WPF

WPF で Data Binding と Command を使ったアプリケーションをシンプルに書きたかった話

WPF

数年前から WinQuickLook という Windows アプリケーションを趣味で開発しているのですが、内部実装をガラッと変えた新バージョンの開発進捗が著しく悪いことに悩んでいました。現在 V4 というソリューションで絶賛開発中となっていますが、リリース日は未定…

.NET 6.0 にアップグレードすると ReadyToRun ビルドが失敗するようになったのを直す

.NET Core 3.0 からビルド時に Tier 0 のネイティブコードを生成する ReadyToRun が利用可能になっています。実行時に Tier 0 のコード生成を行わない分、スタートアップの高速化が期待できる機能です。.NET 6.0 は Windows x64 環境なら全てのクロスコンパ…

.NET Framework 3.0 で作られたアプリケーションを .NET 5 に最新化して GitHub で公開するまでに行ったこと

CodePlex に置いてあった .NET Framework 3.0 時代に書かれたアプリケーションを、GitHub に移行しつつ .NET 5 で動くように 2 週間ぐらい頑張った話を書きます。正直なところ 12 年前に書かれたコードを何とかするのはめっちゃ大変でした。今回コードの改善…

.NET 6.0 Preview で WPF が ARM64 に対応したのでビルドして Surface Pro X で試した

.NET 5.0 で Win Forms は ARM64 の Windows に対応しましたが、WPF は 2021 年に先送りになっていて非常に残念でしたが、最近リリースされた .NET 6.0 Preview の Nightly Build でついに対応しました。GitHub の Issue ではマイルストーンが 5.0.0 になっ…

WPF と WebView2 で MSAL を使わずに Azure AD 向け認可コードフローを実装してみた

普段は App Service の Easy Auth を使ってサクッと済ませるのですが、ちょいちょい MSAL を使った Azure AD や Azure AD B2C へのログイン処理をアプリケーションに組み込むことがあります。特にネイティブアプリケーションの場合が多いので、.NET Core の …

WPF で WindowChrome を使った時のシステムメニューを消す

WPF

WPF アプリケーションを書いていて、ユーザーからは閉じることが出来ない Window を作る必要があったのですぐ出来ると調べていたら、思った以上にはまったのでメモとして残します。Windows では Window を閉じるための方法がいくつか存在していますが、以下…

App Center と Azure Pipelines を利用した WPF (.NET Core) アプリケーション開発の効率化

App Center SDK 3.0.0 で WPF (.NET Core) に正式対応したのと、ずっと SR を投げていた Azure Pipelines の問題が解消されたので、この二つを使って WPF アプリケーションのビルドを自動化しました。例によって対象の WPF アプリケーションは WinQuickLook …

Surface Pro X (ARM64) に対応したアプリケーションを作る

10 インチの Surface Go に ARM の CPU が載ることを期待していましたが、Surface Pro X に載ってしまったので検証用に買うべきか悩んでいます。本体だけなら $999 から買えるので比較的安いです。例によって日本での発売は未定ですが、フラグシップとなる S…

.NET Core 3.0 で WinForms / WPF を使う場合は実行ファイルのパスに注意

WPF

.NET Core 3.0 では WPF や WinForms が使えるようになっていて、配布時には大体 Self-contained かつ Single-file executables としてパッケージングするのが一般的になるはずです。Desktop Bridge を使って APPX / MSIX を作るのに近い形ですが、よりカジ…

.NET Core 3.0 Preview 7 で Go Live が付いたので WPF アプリケーションを更に対応させた

WPF

タイトルの通り .NET Core 3.0 Preview 7 がリリースされ、このバージョンから Go Live が付くようになりました。プロダクション環境で使うことが出来るようになったということです。ちなみに GA は .NET Conf 2019 のタイミングという話です。つまり 9 月末…

Per-Monitor DPI 環境下で WPF の Window 位置を調整する

WPF

作っているアプリをマルチモニターに対応させつつ、異なる DPI でも問題なく動くように実装していたら、思ったよりもはまったのでメモとして残します。動作確認用にアプリケーションを作ったので、とりあえず公開しておきました。それぞれのボタンを押すと、…

既存の WPF アプリケーションを .NET Core 3.0 に移行した

Visual Studio 2019 が RC に到達したという話だったので、検証用に使っているマシンにインストールして既存 WPF アプリの .NET Core 3.0 移行がどのくらいのコストで行えるのか試しました。にぃにが書いているように .NET Core 3.0 を Visual Studio 2019 R…

WPF アプリケーションを Desktop Bridge を使って Windows Store に公開してみた

開発した WPF アプリケーションに対して、簡単にアプリケーションの配布を行いたかったので Windows Store に公開してみました。初めての Desktop Bridge です。今回 Windows Store に公開したアプリケーションは WinQuickLook です。実際に行ったきっかけは…

WPF を使って動画のサムネイルを生成してみた

WPF

かなり久しぶりに WPF を使って動画からサムネイルを作ってみるコードを書いてみました。最初は MediaElement を作って、そのまま RenderTargetBitmap にレンダリングすれば良いかなと思ったんですが、それだと MediaElement 自体の描画が行われないみたいな…

WPF 4 の罠に引っかかった

WPF

ええ、またですよ。今日で 1.5 差し替えと 1.51 公開とかやっちゃいましたよ・・・。本当にごめんなさい。WPF4 ではテキストスタックが新しくなり、その時に TextOptions クラスが追加されて 3 つの添付プロパティが追加されました。今回はその中でも TextRe…