这个问题类似于我今天早些时候提出的this question。不同的是,现在我想删除由name
或header
引用的标签项。我能否以类似于我在这个问题上得到的答案的方式来呼叫Remove
?
这是我尝试过的:
tabControl.Items.Remove = tabControl.Items //Changes tab according to TreeView
.OfType<TabItem>().SingleOrDefault(n => n.Name == stringValue);
我可以使用this之类的内容吗?如果是这样,怎么样?
答案 0 :(得分:1)
我对从wpf中删除知之甚少,但是这段代码比你发布的代码更有效。删除是一种方法,您不能为其赋值,因此您必须隔离要删除的项,检查以确保它不为空,然后将该对象传递给Remove
方法。 / p>
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 - Best way to remove an item from the ItemsSource,因为它详细说明了检查项目是否可以删除,以及即使Remove方法可用于该控件。