SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight/WPFで使える逆引きTips集

Silverlight/WPFで使える逆引きTips集
――Ribbon機能(前編)

(14) Ribbonインターフェース前編

05.タブが選択されたことを知る

 タブが選択されたことを知るにはRibbonコントロールSelectionChangedイベントを使用します。

 また「どのタブが選択されたのか」を知るには、RibbonコントロールのSlectedIndexプロパティを使用して、選択されたタブのインデックスを取得します。

 下記は、タブが選択されたことを知る例です。

 タブが選択されると、「○番目のタブが選択されました」というメッセージを表示します。

タブを選択されたことを知る例
タブを選択されたことを知る例
XAMLの例
<ribbon:Ribbon x:Name="Ribbon">
    <ribbon:RibbonTab x:Name="HomeTab" Header="ホーム" />
    <ribbon:RibbonTab x:Name="InsertTab" Header="挿入" />
    <ribbon:RibbonTab x:Name="PagelayoutTab" Header="ページレイアウト" IsSelected="False" />
</ribbon:Ribbon>
<TextBlock Grid.Row="1" Height="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Top" Name="TextBlock1"/>
VBの例
' タブが選択されたときの処理
Private Sub RibbonTab_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) 
    Handles Ribbon.SelectionChanged
    
    '選択されたタブの番号を取得
    Dim selectedIndex As Integer = Ribbon.SelectedIndex + 1

    '選択されたタブの情報を表示
    Dim msg As String = selectedIndex.ToString() + "番目のタブが選択されました"
    TextBlock1.Text = msg
End Sub
C#の例
// タブが選択されたときの処理
private void Ribbon_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // 選択されたタブの番号を取得
    int selectedIndex = Ribbon.SelectedIndex + 1;

    // 選択されたタブの情報を表示
    string msg = selectedIndex.ToString() + "番目のタブが選択されました";
    TextBlock1.Text = msg;
}
ポイント

 タブが選択されたことを知るにはRibbonコントロールのSelectionChangedイベントを使用する。

 どのタブが選択されたかを知るにはSelectedIndexプロパティを参照する。

06.コンテキストタブを表示する

 コンテキストタブとは特定の時だけ表示させるタブです。

 例えばExcel 2010では、シートに貼り付けられている画像が選択されると「描画ツール」と書かれたラベル(これをコンテキストタブグループと呼びます)が表示され、その中に「書式」タブが表示されます。この「書式」タブがコンテキストタブです。コンテキストタブはコンテキストタブグループの中に複数表示されるものもあります。

Excelのコンテキストタブの例
Excelのコンテキストタブの例

 コンテキストタブはコンテキストタブグループの中に表示する必要があるため、はじめにコンテキストタブを作成します。コンテキストタブは<Ribbon.Contextualtabgroups>要素および<Ribbon.Contextualtabgroup>要素を使用して下記例のように記述します。 

 Header属性はコンテキストタブグループに表示するテキストを、Visibility属性にはコンテキストタブグループ表示するかどうかを(表示する場合はVisibleを指定します)、Background属性にはコンテキストグループの背景色を指定します

コンテキストタブグループのXAMLの例
<ribbon:Ribbon.ContextualTabGroups>
    <ribbon:RibbonContextualTabGroup Header="タブグループ1" Visibility="Visible" Background="Orange"/>
</ribbon:Ribbon.ContextualTabGroups>

 コンテキストタブは「04.タブを追加する」で紹介したRibbonTabコントロールで作成することができます。通常のタブとコンテキストタブを区別するためにContextualTabGroupHeader属性が必要となります。ContextualTabGroupHeader属性にはどのコンテキストタブグループに属するタブであるかがわかるように、要素のHeader属性と同じ値を設定し、下記例のように記述します。

コンテキストタブのXAMLの例
<ribbon:RibbonTab Header="タブ1" ContextualTabGroupHeader="タブグループ1">
</ribbon:RibbonTab>

 ここまでの説明を踏まえ、「タブグループ1」というコンテキストタブグループの中に「タブ1」と「タブ2」というコンテキストタブを表示する例を下記に示します。XAMLをよく見るとわかりますが、最初にRibbonTabを記述し、次にRibbon.ContextualTabGroupsを記述します。この順番で記述しないとエラーとなりますので注意してください。

コンテキストタブの例
コンテキストタブの例
XAMLの例
<ribbon:Ribbon x:Name="Ribbon">
    <ribbon:RibbonTab x:Name="HomeTab" Header="Home">
    </ribbon:RibbonTab>

    <ribbon:RibbonTab Header="タブ1" ContextualTabGroupHeader="タブグループ1">
    </ribbon:RibbonTab>
    <ribbon:RibbonTab Header="タブ2" ContextualTabGroupHeader="タブグループ1">
    </ribbon:RibbonTab>
    <ribbon:Ribbon.ContextualTabGroups>
        <ribbon:RibbonContextualTabGroup Header="タブグループ1" Visibility="Visible" Background="Orange"/>
    </ribbon:Ribbon.ContextualTabGroups>
</ribbon:Ribbon>
ポイント

 コンテキストタブを作成するには<Ribbon.ContextureTabGroups>要素および<Ribbon.ContextureTagGroup>要素でグループを作成し、タブに表示する文字はHeader属性に設定する。コンテキストタブの表示/非表示はVisiblity属性を設定する。

 またコンテキストタブ内に表示するタブはRibbonTabコントロールを使用し、ContextualTabGroupHeaderでどのコンテキストタブに表示するかを設定する。

次のページ
07.グループを作成する

この記事は参考になりましたか?

Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5940 2011/05/31 14:00

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー