WPF DataGrid コントロールへの未選択状態のセット(.NET 6.0)

9年前に「WPF DataGrid コントロールへの未選択状態のセット」という DataGrid コントロールの行選択状態の解除を行う添付プロパティについての記事を書いたのですが、添付プロパティとしては無理やり感のある構成になっていたので、ビヘイビアに書き直してみました(MakCraft.ViewModelCore パッケージ上で動かそうとすると、意図したとおりに動かないという話もあり😓)。

うまく動かない原因は、MakCraft.ViewModelCore.NotifyObject クラスの SetProperty メソッドでプロパティ チェンジ イベントの発火の際に、更新前後データの比較を行わないパターンを排除したことが原因になっていました。なので、プロパティ チェンジに依存する方式をやめて、単純にキーボードのキー押下イベントに対応させるビヘイビアにしています。

WPF アプリケーションのテンプレートを選択してプロジェクト名「DataGridUnselectCell2」としてプロジェクトを作成します。

ソリューション エクスプローラーのプロジェクト名 DataGridUnselectCell2 を右クリックして「NuGet パッケージの管理」を選択して NuGet から「MakCraft.MakViewModelBaseCore」をインストールします(ビヘイビア作成で必要になる Microsoft.Xaml.Behaviors.Wpf は、MakCraft.MakViewModelBaseCore でパッケージ依存の設定がされているので自動的にインストールされます)。

プロジェクトに「Behaviors」フォルダを作成し、「DataGridUnselectBehavior」クラスを作成します。IsLoadedUnselect 依存関係プロパティを設け、true が設定されていれば、ウィンドウを開いたときに未選択状態にするようにしています。

ビヘイビアを除いた構成は、以前書いたものと同様にします。

プロジェクトに「Models」フォルダを作成し、「Sample」クラスを作成します。

プロジェクトに「ViewModels」フォルダを作成し、「MainWindowViewModel」クラスを作成します。

MainWindow.xaml を次のように変更します。


WPF DataGrid コントロールへの未選択状態のセット(.NET 6.0)」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です