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