#wpf #tabcontrol
#wpf #tabcontrol
Вопрос:
У меня есть элемент управления вкладкой, где щелчок правой кнопкой мыши по элементу вкладки показывает контекстное меню. При нажатии на пункт меню под названием «Закрыть» я хочу закрыть элемент вкладки, на который пользователь щелкнул правой кнопкой мыши.
Вот проблема. Если у меня есть TabItem1 и tabItem2 и выбран TabItem1. Затем щелкните правой кнопкой мыши на tabItem2 и нажмите «закрыть». На данный момент TabItem1 по-прежнему является выбранным элементом, но я хочу закрыть tabItem2, и я не знаю, как получить tabItem2.
Если я могу получить, находится ли курсор в элементе управления (а не непосредственно над b / c, он находится непосредственно над текстовым блоком, который я добавил в заголовок элемента вкладки) Я смог бы найти элемент управления и удалить его из Tabcontrol.Товары
Будем признательны за любую помощь.
Спасибо
Комментарии:
1. Похоже, вы хотите знать, на какой вкладке вы щелкнули правой кнопкой мыши, а не на какой из них находится мышь при выборе «Закрыть» (тем более, что мышь может больше не находиться над любой из вкладок при нажатии «Закрыть»).
Ответ №1:
Используйте событие ContextMenuOpening, чтобы определить, с какой вкладки было открыто контекстное меню, тогда нет необходимости беспокоиться о мыши:
<TabControl TabItem.ContextMenuOpening="ContextMenu_ContextMenuOpening">
<TabControl.Resources>
<ContextMenu x:Key="context_menu" >
<MenuItem Header="Option 1" />
<MenuItem Header="Option 2" />
</ContextMenu>
</TabControl.Resources>
<TabItem x:Name="tab1" Header="Tab 1" Content="This is Tab 1" ContextMenu="{StaticResource context_menu}" />
<TabItem x:Name="tab2" Header="Tab 2" Content="This is Tab 2" ContextMenu="{StaticResource context_menu}" />
</TabControl>
И обработчик событий:
private void ContextMenu_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
//get the tab item:
TabItem bob = e.Source as TabItem;
}