sh1’s diary

プログラミング、読んだ本、資格試験、ゲームとか私を記録するところ

WPF

WPF IValueConverter の小ネタとテクニックの整理

MarkupExtension の実装と DependancyProperty の実装 パラメータがないときの実装パターン MarkupExtension の実装パターン Freezable を使う Sample 参考 WPF の IValueConverter を実装するときの考え方と小ネタ。 MarkupExtension の実装と DependancyPr…

WPF Calendar コントロールのカスタマイズ

カレンダーコントロールの構造 Day セルのカスタマイズ ElementNotAvailableException の対応 カレンダーの Binding 要素の更新 カレンダーの Binding の修正例 サンプル 参考 WPF のカレンダーコントロールをしっかりとやっている記事が少なかったので記録…

.NET プログラムのバージョンを管理する例

バージョンの基本的な用途のポイント 個人的な最小要件のバージョン管理方法 プログラムからのバージョン参照 参考 .NET でアプリケーションを作成したとき、プログラムのバージョンを正しく管理し続けることが難しいプロジェクトが結構あると思います。.NET…

WPF UI(UI ライブラリ)の使い方(3)バージョン3対応

現在のリソース SnackBar XAML 変更点 (最適ではないけど)動作する最小サンプル Prism DI を使った例 そのほかのアップデートの注意点 参考 WPF UI のメジャーバージョンが「3」になりました。アップデートに伴って、旧バージョンになった「2」は NuGet …

WPF RadioButton と Enum 値の Binding

XAML View ViewModel Converter サンプル 参考 WPF の RadioButton の IsChecked プロパティに Enum 値を Binding させたいシーンが結構よくあります。地味に使うケースがあるんだけど、記述方法にひと手間あるんでその内容を記録しました。 この記事の内容…

WPF JumpList の使い方について

JumpList 使い方の例 参考 WPF のアプリを作っているときに JumpList を使おうと思ったときに、システムトレイアイコンのメニューとの使い方の違いを再認識しました。その内容をメモ。 JumpList JumpList は Windows 7 から追加された windows の機能です。 …

WPF ToggleButton 注意点の整理

ToggleButton のデザイン ToggleButton のイベント コード上からの注意点 余談:添付プロパティで対応できるか? 参考 タイトルのとおり、WPF のコントール ToggleButton の使い方についてのメモです。ToggleButton は、通常のボタンに加えて IsChecked プロ…

WPF UI(UI ライブラリ)の使い方(2)Snackbar 編

SnackBar XAML の設定 (最適ではないけど)動作する最小サンプル Prism の DI を使った例 参考 WPF UI のメジャーバージョンが「3」になりました。アップデートに伴って、旧バージョンになった「2」は NuGet でも非推奨になってしまいました。 バージョン…

WPF UI(UI ライブラリ)の使い方(1)

インストールと初期設定 補足(直接指定) 補足(テーマの指定) XAML からライブラリを利用するための設定 システムのテーマを適用する メニュー 参考 WPF の GUI ライブラリ「WPF UI」を使ってみる機会があったので、基本的な使い方をメモ。 WPF の GUI ラ…

C# OS にインストールされているデフォルトプリンター情報を取得

以前、.NET Framework 時代の記事だけど「C# OS にインストールされているプリンターのアイコンを取得」を書いた。 デフォルトのプリンター名も取得したくなったので、改めて .NET 用に書き直したのでメモ。 できること デフォルトのプリンターの名前を取得 …

C# NLog を利用したプログラムサンプル

NLog を利用する手順 Debugger File ソースコード上からの Logger アクセス サンプル 参考 NLog を実際に利用するために、サンプルを作成した。サンプルでは「Window起動時のイベント発生順位」と同じ内容を実行してみた。気になる点があったので、自分でも…

WPF UserControl クラスから ContentRendered イベントをバインドする

問題の例 ContentRendered イベントを UserControl から利用する ContentRendered.Command の実装例 サンプル 参考 通常、UserControl から ContentRendered イベントを使いたいシーンはあまり無いと思いますが、例外になるケースがありました。 Prism の Di…

WPF カスタムコントロールの作り方(ToggleButton の例)

カスタムコントロールライブラリ ToggleControl のうごき サンプル 参考 WPF のカスタムコントロールの作り方……というか、基本的には設計者が設計したとおりに動作すればそれでいいような気もしますが、WPF にはいろんなカスタムコントロールの作り方があっ…

C# DI コンテナと CompositeDisposable の組み合わせ

使い方の例 参考 DI コンテナを利用しているプロジェクトで、リソースを破棄する処理をしようと思ったとき、CompositeDisposable を利用するという選択肢があります。 Window を閉じて終了するとき、Window の情報の〇〇を保存する アプリを終了するとき、ゲ…

C# Excel ファイルからセルのデータを読み込む(ClosedXML)

ClosedXML を使った読み込み サンプル 参考 C# で Excel ファイルを読み込んで利用する方法は、ライブラリーを利用したいくつかのやり方があると思います。おそらくよく検討に挙がりそうなのは以下のあたりだと思います。 COM 依存しない ClosedXML (MIT Lic…

WPF トーストの表示

WPF (.NET6) でトースト表示をテストしてみた内容を記録します。 かつてのトースト表示は、アプリケーションをパッケージ化したり証明書が必要であったりしたため、利用には面倒がありました。 現在は、かなりの面倒がなくなっており、ちょっとした通知の実…

Prism 子ウィンドウ(ダイアログ)IDialogAware を表示する

Prism App.xaml MainWindow (View + ViewModel) Dialog1 Dialog2 サンプル 参考 Prism を利用するプロジェクトで子ウィンドウ(ダイアログ)を表示する方法は、バージョンの進化によって変化してきているようです。 現在(下記のバージョン記載)では、ダイ…

WPF PasswordBox のバインドとその対策 (Windows Hello)

非推奨でも Password プロパティを Binding する Windows Hello を利用した認証 エラー発生するとき サンプル 参考 PasswordBox コントロールの Password プロパティは仕様のため、バインディングをすることができません。まずもって、バインディングをする…

WPF Prism サンプルコードの学習6(公式外サンプル1)

1. Bootstrap 2. ViewModelLocator 3. Module 4. MVVM の基本クラス 5. InteractionRequest 6. Navigation 7. EventAggregator 8. ModuleLoadSeq 9. RegionBehavior 10. ModuleCatalog まとめ 参考 前回まで Prism の公式サンプルを確認しました。補足として…

WPF Prism サンプルコードの学習5 (Navigation, Invoke)

14. UsingEventAggregator 15. FilteringEvents 16. RegionContext 17. BasicRegionNavigation 18. NavigationCallback 19. NavigationParticipation 20. NavigateToExistingViews 21. PassingParameters 22. ConfirmCancelNavigation 23. RegionMemberLifet…

WPF Prism サンプルコードの学習4 (Commands)

11. DelegateCommands 12. UsingCompositeCommands 13. IActiveAwareCommands まとめ 参考 WPF + .NET Core (5以降は Core は省略される) で Prism を使ってみよう。 使用している Prism のバージョンは次のとおり: 8.1.97 (2021/05/25) GitHub - Prism Sa…

WPF Prism サンプルコードの学習3 (ViewModelLocator)

8. ViewModelLocator 9. ChangeConvention 10. CustomRegistrations まとめ 参考 WPF + .NET Core (5以降は Core は省略される) で Prism を使ってみよう。 使用している Prism のバージョンは次のとおり: 8.1.97 (2021/05/25) GitHub - Prism Sample WPF …

WPF Prism サンプルコードの学習2 (Module)

7. Modules 7.1 Modules - AppConfig 7.2 Modules - Code 7.3 Modules - Directory 7.4 Modules - LoadManual 7.5 Modules - Xaml まとめ 参考 WPF + .NET Core (5以降は Core は省略される) で Prism を使ってみよう。 使用している Prism のバージョンは…

WPF Prism サンプルコードの学習1 (Bootstrapper, Region)

1. BootstrapperShell 2. Region 3. Custom Region Adapter 4. View Discovey 5. View Injection 6. ActivationDeactivation 参考 WPF + .NET Core (5以降は Core は省略される) で Prism を使ってみよう。 使用している Prism のバージョンは次のとおり: …

Prism Full App (.NET Core) テンプレートを体験する

テンプレートの構成について WPF_Core_FullSample プロジェクト Core プロジェクト Modules.ModuleName プロジェクト Services.Interfaces プロジェクト Services.Services プロジェクト 新しいサービスを追加するテスト Services.Interfaces の修正 Service…

C# Core Audio API を使ってみる

音量を変更するための P/Invoke 音量を変更するコード サンプル 参考 Core Audio API は Windows Vista から追加された OS のスピーカー設定(音量など)にアクセスするためのものです。 Core Audio API OS のスピーカーまわりをイジるには丁度よい API なの…

WPF + .NET 5 で CsWin32metadata を利用するサンプル

.NET 5 環境で Win 32 API を利用しようと思ったら、従来なら P/Invoke(DllImport)で利用する関数や構造体なんかを再定義して利用していたと思います。2021 年末を完成目標にして「win32metadata」が立ち上がっているので、こっちを利用してみるテスト。 w…

C# .Net Framework と Visual C 再配布パッケージのインストール確認

.NET Framework のバージョン確認 Visual Studio 20XX Visual C++ 再頒布可能パッケージの確認 サンプル おまけ(ランタイム is なに) 参考 いまでも WPF の Windows ネイティブアプリケーションを作るときに .NET Framework を使うことがあるのですが、古…

Visual Studio 2019 v16.7 アップデートと使いそうな機能まとめ

C# のコーディング変更点 1. デバッガ―ディスプレイのショートカットの追加 2. コード補完機能で日付の書式指定の候補がでる 3. Top level statements 3.1 Top level statements と Main メソッドがあるときの動作 4. record 型の追加 4.1 record のリフレク…

WPF DataGrid 内にあるカスタムチェックボックスの Binding が反応しない

問題点 備考 Binding を発生させるための対策 サンプル 参考 問題点 WPF のデータグリッドを利用していて、データグリッドの列に「カスタムコントロールの CheckBox」を利用しています。 このとき、チェックボックスを操作しても Binding が思った通り反応し…