Wpf 如何从TabControl获取上一个选定的TabItem索引?

Wpf 如何从TabControl获取上一个选定的TabItem索引?,wpf,vb.net,Wpf,Vb.net,以下xaml代码满足您的测试需求 <Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="200" Width="350"> <DockPanel> <TabCo

以下xaml代码满足您的测试需求

<Window x:Class="MainWindow"  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="350">
<DockPanel>
    <TabControl x:Name="TabControl" DockPanel.Dock="top">
        <TabItem x:Name="TabItem1" Header="London">
            <Label Content="London" />
        </TabItem>
        <TabItem x:Name="TabItem2" Header="Paris">
            <Label Content="Paris" />
        </TabItem>
        <TabItem x:Name="TabItem3" Header="Tokyo">
            <Label Content="Tokyo" />
        </TabItem>
        <TabItem x:Name="TabItem4" Header="Istanbul">
            <Label Content="Istanbul" />
        </TabItem>
    </TabControl>
</DockPanel>
</Window>

如何从TabControl获取上一个TabItem索引并显示在MessageBox中

我需要从代码隐藏运行vb.net代码。

SelectionChangedEventArgs
中的
IList
属性,它保存自上次发生
SelectionChanged
事件以来未选中的项目。 每次出现
选项卡控件
事件的
选择更改
时,您都可以检查它:

private void TabControl_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.RemovedItems.Count > 0)
        {
            var oldTabItem = e.RemovedItems[0] as TabItem;
        }
    }
xaml:

 <DockPanel>
        <TabControl x:Name="TabControl" DockPanel.Dock="top" SelectionChanged="TabControl_OnSelectionChanged" > ..

..

您可以处理
SelectionChanged
事件,并从事件参数的
RemovedItems
中获取它。为什么要RemovedItems?请查看我的答案,sry我对vb.net不太熟悉,但您应该能够轻松地转换它