2016-03-23 67 views
1

我有一個TabControl包含兩個TabItems(讓我們稱之爲「A」和「B」)的窗口。選項卡A有幾個ContextMenus:我希望每個MenuItem將TabItem更改爲Tab B.理想情況下,我會編寫一個MenuItem模板,在選擇MenuItem時切換選項卡。這可能嗎?WPF共享EventTrigger

編輯: 我結束了使用的解決方案依賴於在ContextMenus的MenuItems從定義click事件和處理程序基本樣式推導:

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

我叫我要到標籤控件和標籤項目開關:

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

然後在MainWindow.xaml.cs代碼隱藏文件:

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

目前尚不清楚您要求的是什麼......標籤A的拼寫菜單需要將標籤更改爲顯示標籤B.您是否可以改寫/寫入您的位置? – OmegaMan

+0

是......當按下其中一個菜單項時,選項卡A的上下文菜單需要更改選項卡以顯示選項卡B. – riqitang

+0

什麼阻止您訂閱活動並切換到表B? – OmegaMan

回答

0

訂閱菜單選擇事件。在處理操作的方法內部,然後提取哪個菜單通過方法參數調用,該方法參數標識Sender(可能將Tag屬性標記爲其他選項卡的引用(?))。然後轉到相應的目標選項卡。

+0

那麼沒有純粹的XAML解決方案?我將永遠需要一個代碼隱藏? – riqitang

+0

@riqitang爲我們提供了一個小例子應用程序。 AFAIK的變量太多,可能會妨礙正確的答案。沒有什麼比僅僅爲了讓OP說「解決方案不像我的系統」而解決問題的解決方案更糟了。 :-) – OmegaMan

+0

我很欣賞這個建議,我使用最少的代碼工作,我將用「解決方案」編輯OP,並將此答案標記爲已接受(因爲解決方案基於此解決方案) – riqitang