WPF

[WPF] (MVVM)選択されているTabItemをViewModelで取得

2016/08/21

選択されているタブをViewModelで知りたい場合は、TabControlのSelectedIndexプロパティをBindingして、その値を見ればOK。

xaml側でこんな感じでBinding。

    <TabControl SelectedIndex="{Binding TabPage}">
        <TabItem Header="タブ1"/>
        <TabItem Header="タブ2"/>
        ...
    </TabControl>

 
ViewModel側ではBindingさせるプロパティを定義するだけ。
このプロパティを参照することで、選択されているタブを知ることができます。

    public int TabPage { get; set; }

    public void Hoge()
    {
        ...

        //==== 選択されているタブに応じて処理 ====//
        switch (TabPage)
        {
            //== タブ1 ==//
            case 0:
                // 「タブ1」が選択されているときの処理。
                break;

            //== タブ2 ==//
            case 1:
                // 「タブ2」が選択されているときの処理。
                break;
        }

        ...
    }

 

TabItemの数・位置が固定なら、enum型でBindingさせた方が分かりやすいですね。

xaml側は変更なし。
ViewModel側で先程定義した「TabPage」の型をenum型に置き換えます。

    enum Page
    {
        Page1 = 0,
        Page2,
        ...
    }

    public Page TabPage { get; set; }

    public void Hoge()
    {
        ...

        //==== 選択されているタブに応じて処理 ====//
        switch (TabPage)
        {
            //== タブ1 ==//
            case Page.Page1:
                // 「タブ1」が選択されているときの処理。
                break;

            //== タブ2 ==//
            case Page.Page2:
                // 「タブ2」が選択されているときの処理。
                break;
        }

        ...
    }

 
 

-WPF
-,