C# 添加新选项卡项时更改选项卡控件SelectedIndex
我制作了一个按钮,在TabControl中添加一个新的TabItem。它工作正常,但我希望在添加新选项卡项时,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
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
,它工作了。但这不是我想要的。这只是巧合,因为即使在延迟执行之后,项目容器的生成也可能无法完成。如何从代码隐藏中完成?我认为将事件处理程序添加到ItemsChangedIfti
更容易,因为它已经是一个TabItem了,它甚至更简单。查看编辑。它不起作用,仍然存在一个问题,即当您设置IsSelected属性时,ti没有完全创建。您忘记告诉ti
实际上是什么,是不是TabItem?是的,它是TabItem