[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;
}
...
}