C# 添加新选项卡项时更改选项卡控件SelectedIndex

C# 添加新选项卡项时更改选项卡控件SelectedIndex,c#,wpf,tabitem,C#,Wpf,Tabitem,我制作了一个按钮,在TabControl中添加一个新的TabItem。它工作正常,但我希望在添加新选项卡项时,SelectedIndex位于新选项卡项上。 香港邮政编码 private void AddNewTabItem(object sender, MouseButtonEventArgs e) { ... tabControl.Items.Add(tabItem); tabControl.SelectedIndex = tabCont

我制作了一个按钮,在TabControl中添加一个新的TabItem。它工作正常,但我希望在添加新选项卡项时,SelectedIndex位于新选项卡项上。 香港邮政编码

private void AddNewTabItem(object sender, MouseButtonEventArgs e)
    {
        ...
        tabControl.Items.Add(tabItem);
        tabControl.SelectedIndex = tabControl.Items.Count - 1;
    }
但是这不起作用,因为新的TabItem是在所有链接到我的按钮点击的函数都被执行之后创建的。因此,当我更改SelectedIndex时,还没有创建新的TabItem

我在TabControl类中搜索了一个触发事件,比如“WhenItemsChange”,但什么也没找到


谢谢你的帮助,如果不清楚,我很抱歉

您可以创建默认选中的选项卡项

如果
ti
已经是一个TabItem,只需编写

ti.IsSelected = true;
tabControl.Items.Add(ti);
如果没有,请为选项卡控件的
ItemContainerStyle
指定适当的样式:

<TabControl x:Name="tabControl">
    <TabControl.ItemContainerStyle>
        <Style TargetType="TabItem">
            <Setter Property="IsSelected" Value="True"/>
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>

试试这个:

private void AddNewTabItem(object sender, MouseButtonEventArgs e)
{
    ...
    tabControl.Items.Add(ti);
    Dispatcher?.BeginInvoke((Action)(
            () => tabControl.SelectedIndex = tabControl.Items.Count - 1));
}

您可以尝试使用
OnItemChanged
方法,并将
IsSelected
设置为新添加的选项卡项我不确定此方法,您能更精确一点吗?是否使用
tabControl
MainWindow。tc
引用相同的tabControl?那么
tabControl.SelectedItem=ti?是的,它指的是同一个选项卡控件,我编辑过,所以它更清晰
tabControl.SelectedItem=ti
也不起作用。由于与以前相同的问题,直到函数结束,TabItem才完全创建按钮中的code>。MouseLeftButtonUp
代替了
按钮。MouseLeftButtonDown
,它工作了。但这不是我想要的。这只是巧合,因为即使在延迟执行之后,项目容器的生成也可能无法完成。如何从代码隐藏中完成?我认为将事件处理程序添加到ItemsChangedIf
ti
更容易,因为它已经是一个TabItem了,它甚至更简单。查看编辑。它不起作用,仍然存在一个问题,即当您设置IsSelected属性时,ti没有完全创建。您忘记告诉
ti
实际上是什么,是不是TabItem?是的,它是TabItem