[WPFリボン プログラミング] 第8回 ~特定のときのみ表示させるコンテキストタブ~

[WPFリボン プログラミング ] 第8回 ~特定のときのみ表示させるコンテキストタブ~

[ コンテキスト タブとは ]
WordやPowerPointで、貼り付けてある表や図を選択したときにだけ表示されるタブがあります。
下図はWordの例で、表を選択したときだけに表示されるタブです。
[デザイン]、[レイアウト]と書かれているタブは、表を選択しているときにしか表示されません。
それらの上の黄色い部分に書かれている[表ツール]という部分を、コンテキスト タブセットと呼びます。

これは、PowerPointで図を選択しているときに表示されるコンテキストタブです。
[図ツール]の部分が、コンテキスト タブセットです。

これらのタブやタブセットは、表や図を選択していないときには表示されません。
いつ表示するかは、プログラム側で制御できます。

[ コンテキスト タブの実装 ]
第5回の記事で説明している方法で作成したテスト用のアプリケーションに、コンテキスト タブを実装します。
第7回の記事で作成したアプリケーションに追加しても構いません。説明は、第5回のテスト用アプリケーションを元に行います。

コンテキスト タブを実装するには、作成したテスト用アプリケーションのmy:Ribbonタグの中に、下記の青字と赤字の部分のコードを追加します。

<my:Ribbon Name="Ribbon1" VerticalAlignment="Top">
<my:RibbonTab Header="普通のタブ">
<my:RibbonToggleButton Name="toggleButton1" Label="on/off" />
</my:RibbonTab>

<my:RibbonTab Header="CTタブ1" ContextualTabGroupHeader="タブセット1">
</my:RibbonTab>

<my:RibbonTab Header="CTタブ2" ContextualTabGroupHeader="タブセット1">
</my:RibbonTab>

<my:Ribbon.ContextualTabGroups>
<my:RibbonContextualTabGroup Name="tabSet1" Header="タブセット1" Visibility="Visible" Background="Red" />
</my:Ribbon.ContextualTabGroups>

</my:Ribbon>

青字の部分が普通のタブで、赤字の部分がコンテキストタブです。
普通のタブの部分に追加しているRibbonToggleButtonは、後ほど使います。
このプログラムを実行すると、下図のようになります。

ここでは、my:RibbonContextualTabGroupの中で
Background="Red"
というように、背景の色を赤にしています。
コンテキスト タブセットの背景の色は、このように自由に設定できます。

[ コンテキスト タブの表示/非表示の切り替え ]
my:RibbonContextualTabGroupの中で、
Visibility="Visible"
という部分があります。
この部分を変えることによって、コンテキストタブセットを表示させたり、非表示にさせることができます。

先ほど作成したサンプル アプリケーションのRibbonToggleButtonを使用して、表示/非表示の切り替えを実装しましょう。

まず、XAMLエディターのXAMLが表示されている部分のmy:RibbonToggleButtonの行をクリックします。
すると、プロパティ ウィンドウのプロパティと書かれた部分の下が、下図のようにRibbonToggleButtonに変わります。
その状態のままで、プロパティ ウィンドウの [イベント] タブをクリックし、[Click]と書かれたところを探し出して[Click]上でダブルクリックします。

toggleButton1_Clickというイベントハンドラーが自動的に生成され、ソースコード エディタが開くので、下記の赤い字の部分のコードを追加します。

private void toggleButton1_Click(object sender, RoutedEventArgs e)
{
if (toggleButton1.IsChecked == true)
tabSet1.Visibility = Visibility.Collapsed;
else
tabSet1.Visibility = Visibility.Visible;
}

ここでは、RibbonToggleButtonがクリックされるたびに、ボタンが押された状態のときにコンテキストタブを非表示にし、ボタンが押されていない状態のときにコンテキスト タブを表示しています。
この図は、コンテキスト タブを非表示にしているときの図です。

コンテキスト タブセットは、複数表示させることもできます。

次回は、タブの左端に鎮座している、アプリケーションメニューについて説明する予定です。

[WPFリボンの開発用コンポーネントのダウンロード先]
WPFリボンの開発は、Visual Studio 2010またはExpression Blend 4に、Microsoft Ribbon for WPFというコンポーネントを追加することによって開発できます。
以下のサイトからダウンロードすることができます。
https://www.microsoft.com/downloads/en/details.aspx?FamilyID=2bfc3187-74aa-4154-a670-76ef8bc2a0b4&displaylang=en

[WPFリボン プログラミング]
第1回 : ~リボン インターフェイスとは~
第2回 : ~開発環境を揃える~
第3回 : ~リボンについて知っておくべきこと~
第4回 : ~リボン インターフェイスを作る2つの方法~
第5回 : ~タブとグループの作り方~
第6回 : ~グループへのコントロールの追加~
第7回 : ~ボタンをクリックしたときの処理と多彩なツールチップ~
第8回 : ~特定のときのみ表示させるコンテキストタブ~

マイクロソフト
田中達彦