如何在动态 TabControl 中通过其 header select 一个 TabItem?

How to select a TabItem by its header in a dynamic TabControl?

我有多个 TabItems 的动态 TabControl。我需要根据其 header 值动态地 select 一个特定的 TabItem。我已经找到了一种方法 select a TabItem 通过这样的索引,

tabControl.SelectedIndex= 0;

但在这种情况下,我不知道如何通过 header.

找到 TabItem 的索引

我的pseudo-code是这样的:

if(tabControl.Contains(myHeader))
{
   tabControl.SelectedItem = myHeader;
}

假设您的选项卡内容是 TabContent 类型 属性 Header 并且您通过 ItemsSource 属性 绑定项目,您可以这个。

tabControl.SelectedItem = TabControl.Items.OfType<TabContent>().SingleOrDefault(ti => ti.Header.Equals(myHeader));

如果您直接将 TabItem 分配给您的 TabControl,您可以这样做。

tabControl.SelectedItem = tabControl.Items.OfType<TabItem>().SingleOrDefault(ti => ti.Header.Equals(myHeader));

由于两个示例为了方便起见都使用了 Linq,因此请务必使用 using System.Linq; 导入它。 OfType<T>() 方法将过滤特定类型的项目,SingleOrDefault() 将 return 与条件匹配的单个元素或 null,这意味着没有选择选项卡项目.