Как удалить элемент вкладки на основе его имени или заголовка

Этот вопрос аналогичен этот вопрос я задал ранее сегодня. Разница в том, что теперь я хотел бы удалить элемент вкладки, на который ссылается его name или header. Могу ли я позвонить Remove так же, как я получил ответ на этот вопрос?

Это то, что я пробовал:

tabControl.Items.Remove = tabControl.Items //Changes tab according to TreeView
                        .OfType<TabItem>().SingleOrDefault(n => n.Name == stringValue);

Могу ли я использовать что-то вроде этого? Если да, то как?


person Eric after dark    schedule 16.08.2013    source источник
comment
Я настоятельно рекомендую MVVM в качестве образа мышления по умолчанию для WPF. Подобные winforms кодовые взломы и манипулирование элементами пользовательского интерфейса в процедурном коде принесут вам только боль, страдания, пытки и жалкие неудачи. Тем более, когда вы имеете дело с элементами, производными от ItemsControl (такими как TabControl, Menu, ListBox или ComboBox).   -  person Federico Berasategui    schedule 16.08.2013
comment
Это не совсем работает, потому что Remove — это группа методов. Я опубликую то, что я пробовал.   -  person Eric after dark    schedule 16.08.2013
comment
Remove не является свойством, вы не можете присвоить ему значение   -  person Sylens    schedule 16.08.2013
comment
Действительно, с отрицательным голосованием?   -  person Eric after dark    schedule 16.08.2013


Ответы (1)


Я мало что знаю об удалении из wpf, однако этот код с большей вероятностью будет работать, чем то, что вы опубликовали. Remove — это метод, вы не можете присвоить ему значение, поэтому вам нужно изолировать элемент, который вы хотите удалить, убедиться, что он не равен нулю, а затем передать объект в метод Remove.

var tabToDelete = tabControl.Items.OfType<TabItem>().SingleOrDefault(n => n.Name == stringValue);
if (tabToDelete != null) // Since you chose to use SingleOrDefault, we have to check to make sure it isn't null before we try to remove it.
tabControl.Items.Remove(tabToDelete);

Однако я настоятельно рекомендую вам взглянуть на WPF - Лучший способ удалить элемент из ItemsSource, поскольку он подробно описывает проверку того, МОЖНО ли удалить элемент, и даже если метод Remove доступен для этого элемента управления.

person Pete Garafano    schedule 16.08.2013
comment
Могу ли я изменить Name на Header и использовать этот код для ссылки на tabItem на Header? - person Eric after dark; 16.08.2013