2016-03-23 2 views
1

У меня есть окно с TabControl, содержащее два TabItems (назовем их «A» и «B»). Вкладка A имеет несколько ContextMenus: я бы хотел, чтобы каждый MenuItem менял TabItem на Tab B. В идеале я бы написал один шаблон MenuItem, который бы переключил вкладку при выборе MenuItem. Это возможно?WPF shared EventTrigger

EDIT: Решение, которое я закончил с использованием опирается на MenuItems в ContextMenus, вытекающих из основного стиля, который определяет событие щелчка и обработчик:

<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

Непонятно, о чем вы просите ... В контекстном меню Tab Tab необходимо изменить вкладку, чтобы отобразить вкладку B. Можете ли вы переписать/написать свое определение? – OmegaMan

+0

Да ... В контекстных меню Tab A необходимо изменить вкладку, чтобы отобразить вкладку B, когда нажата одна из их пунктов меню. – riqitang

+0

Что мешает вам подписаться на мероприятие и перейти на Tab B? – OmegaMan

ответ

0

Подпишитесь на событие выбора меню. Внутри метода, который обрабатывает операцию, извлеките , какое меню вызывается через аргументы метода, который идентифицирует Sender (возможно, отметьте свойство Tag ссылкой с другой вкладкой (?)). Затем перейдите на соответствующую целевую вкладку.

+0

Итак, нет чистого решения XAML? Мне всегда нужен код? – riqitang

+0

@riqitang представляет собой небольшое приложение для примера, с которым мы работаем. Слишком много переменных AFAIK, которые могут/не могут мешать правильному ответу. Ничто не хуже, чем работать над решением только для того, чтобы OP сказал: «Но это не похоже на мою систему». :-) – OmegaMan

+0

Я ценю совет, я получил его для работы с использованием минимального кода, я отредактирую OP с помощью «решения» и пометьте этот ответ как принятый (поскольку его решение основано на нем) – riqitang

Смежные вопросы