タブ コントロールのタブ選択時にコマンドを起動するビヘイビア(.NET 5.0)

WPF でタブ コントロールを利用してタブで分割された画面を作成しているときに、タブが選択された時点で何か処理を実行させたいときに利用できるビヘイビアです。具体的には、SelectionChangedEvent 発生時にコマンドを呼び出すことができます。

選択されたタブを識別するために、TabItem コントロールの Tag プロパティ(FrameworkElement からの継承)を利用します。

コマンドを実行させたいタブが1つの場合には、ビヘイビアの Tag プロパティに TabItem の Tag プロパティに設定した値を、Command プロパティに実行させたいコマンドを設定します。

コマンドを実行させたいタブが複数ある場合には、IList<ITagCommandCorrespondence> インターフェイス(プロパティに設定した値と呼び出すコマンドの対応を表すインターフェイスのコレクション)をビヘイビアの TagCommandCorrespondences プロパティに設定します。

サンプルプログラムの実行画面は次のようになります。

サンプルプログラムの実行画面の画像
サンプルプログラムの実行画面

それでは、プログラムです。

Visual Studio を起動して、新規プロジェクトの作成から WPF アプリケーションのテンプレートを選択してプロジェクト名「TabSelectionChangedBehavior」としてプロジェクトを作成します。

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

最初は ITagCommandCorrespondence インターフェイスから。これは、TabItem の Tag プロパティに設定した値と呼び出すコマンドの対応を表すインターフェイスです。

プロジェクトに「Behaviors」フォルダを作成し、Behaviors フォルダ下に「Interfaces」フォルダを作成します。作成した Interfaces フォルダに「ITagCommandCorrespondence」インターフェイスを作成します。

次に Behaviors フォルダに「TabSelectionChangedBehavior」クラスを作成します。依存関係プロパティへの設定は、次のようにしています。

コマンドを実行させたいタブが1つの場合
Tag プロパティに TabItem の Tag プロパティに設定した値を、Command プロパティに実行させたいコマンドを設定します。
コマンドを実行させたいタブが複数ある場合
TagCommandCorrespondences プロパティに、IList インターフェイス(プロパティに設定した値と呼び出すコマンドの対応を表すインターフェイスのコレクション)を実装したクラスのインスタンスを設定します。

次に、プロジェクトに「ViewModels」フォルダを作成し、ViewModels フォルダに ITagCommandCorrespondence インターフェイスを実装する「TagCommandCorrespondence」クラスを作成します。

次に、ViewModels フォルダに「MainWindowViewModel」クラスを作成します。タブの選択時に実行するコマンドには、単純に選択回数の表示を行うようにさせています。

次に「MainWindow.xaml」です。TagCommandCorrespondences プロパティへの設定を行うようにしてあり、Tag プロパティと Command プロパティへの設定はコメント化してあります。

以上でサンプルプログラムが動きます。


コメントを残す

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