WPF: Найти, если курсор мыши находится в элементе управления (не обязательно прямо над) - PullRequest
0 голосов
/ 08 мая 2011

У меня есть элемент управления вкладкой, где при щелчке правой кнопкой мыши на элементе вкладки отображается контекстное меню. Когда вы щелкаете по пункту меню «Закрыть», я хочу закрыть вкладку, по которой пользователь щелкнул правой кнопкой мыши.

Вот проблема. Если у меня есть TabItem1 и TabItem2 и TabItem1 выбран. Затем щелкните правой кнопкой мыши TabItem2 и нажмите «закрыть». На данный момент TabItem1 все еще выбранный элемент, но я хочу закрыть TabItem2, и я не знаю, как получить TabItem2.

Если я смогу получить, если курсор находится в элементе управления (а не непосредственно над б / с, он находится непосредственно над TextBlock, который я добавил в заголовок элемента вкладки), я смог бы найти элемент управления и удалить его из Tabcontrol. Пункты

Любая помощь будет оценена.

Спасибо

1 Ответ

0 голосов
/ 08 мая 2011

Используйте событие 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;
}
...