Закрытие / удаление вкладки элемента WPF - PullRequest
2 голосов
/ 01 сентября 2011

У меня есть вкладка управления в окне. Все вкладки имеют простые контекстные меню, которые (должны) позволяют пользователю закрывать их. Однако при нажатии кнопки «Закрыть» ничего не происходит.

Вот обработчик события

void closeTab_Click(object sender, RoutedEventArgs e)
{
    Tabs.Items.Remove((MenuItem)sender);
}

Я огляделся по поводу закрытия вкладок, но ни в одной из найденных статей не было так много подробностей о том, как фактически закрыть вкладку.

Новая проблема:

void closeTab_Click(object sender, RoutedEventArgs e) 
{ 
    MenuItem close = (MenuItem)sender; 
    Tabs.Items.Remove(Convert.ToInt32(close.Name.Remove(0,3))); 
} 

Элемент контекстного меню назван так:

Name = "Tab" + Tabs.Items.Count.ToString(), 

Это все еще ничего не делает

1 Ответ

3 голосов
/ 01 сентября 2011

Пункт меню не является вкладкой. Вы не можете удалить его из TabControl. Вам нужна ссылка на вкладку, к которой принадлежит MenuItem. Это можно сделать разными способами.


Я вижу, что вы пробовали некоторые довольно хакерские вещи с именами и манипуляциями со строками, здесь был бы более чистый подход, который не требует ничего из этого:

var target = (FrameworkElement)sender;
while (target is ContextMenu == false)
    target = (FrameworkElement)target.Parent;
var tabItem = (target as ContextMenu).PlacementTarget;
Tabs.Items.Remove(tabItem);

Это получает родительский элемент, пока не найдет ContextMenu и не получит TabItem от PlacementTarget.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...