sh1’s diary

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

C#

C# 14 の整理

C# 14 について紹介する記事「Introducing C# 14」の内容について、整理しました。 Extension members More productivity for you The field keyword Unbound generic types and nameof Simple lambda parameters with modifiers Null-conditional assignmen…

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

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

VisualStudio デフォルトエンコーディングの指定

設定変更 おまけ 参考 VisualStudio のデフォルトエンコーディングは、隙あらば shift-jis が使われました。これまでは。 これとにかく気持ち悪くて、shift-jis と UTF8 が混在するのは VisualStudio のコーディングする上で気づいたらそうなってしまうもの…

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

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

sharplab-inspect の使い方

1.実行コードの「Run」 Inspect value.Inspect() Inspect.Heap(object) Inspect.Stack(value) Inspect.MemoryGraph(value1, value2, …) Inspect.Allocations(補足) 参考 Sharplab は 2016 年後半ごろに「TryRoslyn」という名前で「C# を Web 上で試せる…

C# パフォーマンス高速化に関するメモ

パフォーマンスに影響の大きい絶対に守るべきこと コレクションの型あわせ ループ内の線形探索 コレクションの初期容量を指定 Result と Wait はやめる 環境 最速の開発/実行環境 構造体 構造体の優位性 構造体の欠点 参照渡し ref readonly/in の難しさ コ…

C# Prism ライブラリ 9.0 更新とライセンス変更

GitHub Prism Prism は主に WPF などで利用できる、XAML アプリケーションを構築するためのフレームワークです。 Prism は Microsoft MVVM Toolkit と似た役割を担うことができるライブラリで、特徴として MVVM +α のような機能を提供しています。 これまで…

ID (UUID, GUID) の利用についての学習メモ

ランキング参加中プログラミング 冪等の例 UUID と GUID C# の GUID の生成 NanoID UUID 7(旧:TODO) 参考 特に SQL などで、利用するユニークな採番(各データに番号を割り当てるプロセス)で、いわゆる ID を利用することがあります。 一般的には(単純…

WPF メインウィンドウ、子ウィンドウのインスタンス取得

WindowService の利用 使い方 ポイント 参考 ボタンなどの GUI イベントを実行したときに、メインウィンドウのインスタンス(ハンドル)が欲しいことがあります。 本来、MVVM で設計をするとこういうことは無いように設計するのかもしれませんが、現実的に V…

C# EventLogEntry「システム時刻の変更」のバグ

C# の EventLogEntry を利用して「システム時刻の変更」の情報を取得すると「CVE の検出の可能性」としてメッセージが出力されます。 イベント ID: 1 タスクのカテゴリ: (5) ソース: Kernel-General たしかに、現在ではオンライン設定がデフォルトになってい…

.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 させたいシーンが結構よくあります。地味に使うケースがあるんだけど、記述方法にひと手間あるんでその内容を記録しました。 この記事の内容…

C# CommunityToolkit.Mvvm 8.2 の確認

ランキング参加中 プログラミング .NET Community Toolkit 8.2! .NET Community Toolkit には何がありますか? (What’s in the .NET Community Toolkit? ) Custom attributes [RelayCommand] 新しい ObservableProperty の変更フック⚗️ MVVM Toolkit の Cod…

C# CommunityToolkit.Mvvm の学習9 collections

ランキング参加中 プログラミング ObservableGroup<TKey, TElement> and ReadOnlyObservableGroup<TKey, TElement> Sample ObservableGroup<TKey, TElement> features ObservableGroupedCollection<TKey, TElement> and ReadOnlyObservableGroupedCollection<TKey, TElement> ObservableGroupedCollection<TKey, TElement> features 参考 Obs…</tkey,></tkey,></tkey,></tkey,></tkey,></tkey,>

C# CommunityToolkit.Mvvm の学習8 IoC

ランキング参加中 プログラミング IoC (Inversion of control) サービスの構成と解決 (Configure and resolve services) コンストラクタの注入 (Constructor injection) Viewmodel は "constructor injection" て、どうなの? (What about viewmodels?) 参考…

C# CommunityToolkit.Mvvm の学習7 Messenger

ランキング参加中プログラミング Messenger どのように機能するか (How it works) 送信 - 送信と受信メッセージ (Sending messages - Sending and receiving messages) Sample リクエストメッセージの使用 (Request messages - Using request messages) Samp…

C# CommunityToolkit.Mvvm の学習6 RelayCommand

ランキング参加中プログラミング RelayCommands どのように機能するか (How it works) ICommand の働き (Working with ICommand) Sample AsyncCommands どのように機能するか (How it works) 非同期コマンドの働き (Working with asynchronous commands) Sam…

C# CommunityToolkit.Mvvm の学習5 ObservableValidator

ランキング参加中プログラミング ObservableValidator どのように機能するか (How it works) 単純な例 Sample カスタム検証のメソッド (Custom validation methods) カスタム検証の属性 (Custom validation attributes) 参考 ObservableValidator Observable…

C# CommunityToolkit.Mvvm の学習4 ObservableObject

ランキング参加中プログラミング どのように機能するか (How it works) 単純な例 サンプル non-observable モデルのラッピング Task の扱い (Handling Task properties) Sample 参考 ObservableObject は、INotifyPropertyChanged と INotifyPropertyChangin…

C# CommunityToolkit.Mvvm の学習3 RelayCommand + INotifyPropertyChanged

ランキング参加中プログラミング RelayCommand 属性 How it works(どのように機能するのか) Command パラメーター 非同期コマンド (Asynchronous commands) コマンドの有効化と無効化 (Enabling and disabling commands) コマンドの同時実行の処理 (Handli…

C# CommunityToolkit.Mvvm の学習2 ObservableProperty

ランキング参加中プログラミング ObservableProperty の属性 ObservableProperty の属性 How it works(どのように機能するのか) Running code upon changes(変化に応じた実行コード) Notifying dependent properties(依存プロパティの通知) Notifying …

C# CommunityToolkit.Mvvm の学習1

ランキング参加中プログラミング MVVM Toolkit のサンプルプログラム Introduction to the MVVM Toolkit で、MVVM Toolkit パッケージはいつ使うべきなの? MVVM Source generators 参考 WinUI3 でも利用できる MVVM として「MVVM Toolkit」の学習をはじめま…

WPF JumpList の使い方について

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

WPF ToggleButton 注意点の整理

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

C# TimeProvider の利用について (.NET8)

この記事は「Qiita - C# Advent Calendar 2023」に参加しています。 C# には、時間を表現するクラスに DateTime と DateTimeOffset があります。.NET 8 から TimeProvider クラスが新しく用意されました。 TimeProvider クラスは .NET8 の新機能のひとつ「時…

C# なるべく高精度な Timer を使う

C# の Timer 事情 補足:自分で sleep を利用したタイマーを作る場合 Windows マルチメディアのタイマー実装の注意 実装するときの P/Invoke 太古の情報 サンプル 参考 Windows において、高精度なタイマーを実装するのは 2000 年以前から難しい(困難)こと…

WinUI3 App.xaml (App.xaml.cs) をカスタマイズする

ランキング参加中プログラミング ファイル構成(App.xaml) AppExBase クラスの実装 AppEx の実装 App.xaml.cs の実装 参考 App.xaml は全体で使うリソースを宣言するファイルで、App.xaml.cs は(主に)アプリケーションのエントリーポイント。 WPF でも Wi…

Win UI3 の入門(1)hello world

Windows App SDK (WinUI 3) とは Win UI の補足 Hello World 環境構築とプロジェクトの作成 プロジェクトの初期構成ファイル デバッグの実行テスト ウィンドウ画面の作成 参考 この記事は、Windows App SDK の使い方について学んだ基本的な内容をアウトプッ…

Visual Studio Extension 拡張機能 (VSIX) を作成する

Visual Studio 拡張機能 拡張機能の開発デバッグ プロジェクトの構成について コマンドを追加する コマンドのローカライズ 公開する GitHub 参考 Visual Studio の拡張機能を作成したときの内容をメモします。 今回、拡張機能を作成しようと思ったきっかけは…