2016-03-23 6 views
1

2つのTabItem(「A」と「B」と呼ぶ)を含むTabControlがあるウィンドウがあります。 Tab AにはいくつかのContextMenusがあります。すべてのMenuItemでTabItemをTab Bに変更したいと思います。理想的には、MenuItemが選択されたときにタブを切り替える1つのMenuItemテンプレートを作成します。これは可能ですか?WPF shared EventTrigger

編集:私は私がしたいタブコントロールとタブの項目を命名

<Window.Resources> 
    <ResourceDictionary> 
     <Style TargetType="MenuItem" x:Key="ContextMenuItemBase"> 
     ... (various stylings) 
     <EventSetter Event="Click" Handler="MenuItem_Clicked"/> 
     </Style> 
    </ResourceDictionary> 
</Window.Resources> 

:私が使用して終了ソリューションは、クリックイベントハンドラを定義する基本スタイルから派生ContextMenusでのMenuItemに依存している スイッチに:MainWindow.xaml.csで次に

<TabControl x:Name="tcTabs"> 
... 
    <TabItem Header="Results" x:Name="tiResultsTab"> 

コードビハインドファイル:

private void MenuItem_Clicked(object sender, RoutedEventArgs e) 
{ 
    tcTabs.SelectedItem = tiResultsTab; 
} 
+0

あなたが求めていることは明らかではありません...タブAのコンティニューメニューでは、タブを表示するようにタブを変更する必要があります。 – OmegaMan

+0

はい...タブAのコンテキストメニューは、メニュー項目の1つが押されたときにタブBを表示するようにタブを変更する必要があります。 – riqitang

+0

あなたはイベントを購読してタブBに変更することを止めていますか? – OmegaMan

答えて

0

メニュー選択イベントを登録します。操作を処理するメソッドの中でSender(おそらくTagプロパティを他のタブの参照(?)とマークする)を呼び出すメソッド引数によってが呼び出されたを取り出します。次に、適切なターゲットタブに変更します。

+0

純粋なXAMLソリューションはありませんか?私はいつもコードビハインドが必要でしょうか? – riqitang

+0

@riqitangは、私たちが取り組むための小さなサンプルアプリケーションを提供しています。 AFAIK変数が多すぎるため、適切な回答を妨げる可能性があります。 OPを "私のシステムと似ていない"と言うだけの解決策に取り組むよりも悪いことはありません。 :-) – OmegaMan

+0

私は助言に感謝し、最小限のコードを使って作業するようにしました。私はOPを "solution"で編集し、この答えを受け入れたものとしてマークします(ソリューションはそれに基づいているので) – riqitang