WPF-组合框不显示selecteditem

WPF-组合框不显示selecteditem,wpf,vb.net,xaml,combobox,Wpf,Vb.net,Xaml,Combobox,我是WPF和VB的新手,我很难弄清楚为什么我在组合框下拉列表中选择的东西在选择后没有显示在组合框中 我通过绑定和DataContext填充组合框。这是我的Settings.xaml文件 <Window.Resources> <DataTemplate x:Key="TabList"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Bindin

我是WPF和VB的新手,我很难弄清楚为什么我在组合框下拉列表中选择的东西在选择后没有显示在组合框中

我通过绑定和DataContext填充组合框。这是我的Settings.xaml文件

<Window.Resources>
    <DataTemplate x:Key="TabList">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=Header}" />
        </StackPanel>
    </DataTemplate>
</Window.Resources>
...
<ComboBox x:Name="tabs" 
          ItemsSource="{Binding tabList}"                                       
          ItemTemplate="{StaticResource ResourceKey=TabList}" 
          Height="32" />
SettingsLoader类看起来是这样的。TRTab是我自己的类,它只是从TabItem继承,只添加了一些额外的属性,没有什么特别之处

Public Class SettingsLoader

    Private _tabs As List(Of TRTab)

    Public Property tabList() As List(Of TRTab)
        Get
            Return _tabs
        End Get
        Set(value As List(Of TRTab))
            _tabs = value
        End Set
    End Property

End Class
我是否需要将属性添加到我的SettingsLoader中,以保存组合框要显示的选定项,或者我缺少什么


编辑:只是为了澄清我试图实现的目标:我有一个带有多个选项卡的TabControl。这些选项卡的标题也需要显示在组合框中以供选择

,因为TabItem是一个内容控件,当选择该项目时,组合框将显示其内容。您可以使用以下XAML标记自己确认这一点:

<Window.Resources>
    <DataTemplate x:Key="TabList">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=Header}" />
        </StackPanel>
    </DataTemplate>
</Window.Resources>
<StackPanel>
    <ComboBox x:Name="tabs" Height="32"
                  ItemTemplate="{StaticResource TabList}">
        <TabItem Content="Content" Header="Header" />
    </ComboBox>
</StackPanel>



另一个选项是将TRTab对象的内容属性设置为与标题属性相同的值。

因为TabItem是一个内容控件,所以选择该项时组合框将显示其内容。您可以使用以下XAML标记自己确认这一点:

<Window.Resources>
    <DataTemplate x:Key="TabList">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=Header}" />
        </StackPanel>
    </DataTemplate>
</Window.Resources>
<StackPanel>
    <ComboBox x:Name="tabs" Height="32"
                  ItemTemplate="{StaticResource TabList}">
        <TabItem Content="Content" Header="Header" />
    </ComboBox>
</StackPanel>



另一个选项是将TRTab对象的内容属性设置为与标题属性相同的值。

是的,这似乎可以做到这一点。谢谢你的澄清,这对我来说很有意义!是的,这似乎很管用。谢谢你的澄清,这对我来说很有意义!
Public Class SettingsLoader
    Private _tabs As List(Of TRTab)

    Public Property tabList() As List(Of TRTab)
        Get
            Return _tabs
        End Get
        Set(value As List(Of TRTab))
            _tabs = value
        End Set
    End Property

    Public ReadOnly Property tabHeaders() As IEnumerable(Of String)
        Get
            If _tabs Is Nothing Then
                Return Nothing
            End If
            Return _tabs.Select(Function(x) x.Header.ToString())
        End Get
    End Property
End Class
<Window.Resources>
    <DataTemplate x:Key="TabList">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding}" />
        </StackPanel>
    </DataTemplate>
</Window.Resources>
<StackPanel>
    <ComboBox x:Name="tabs" 
          ItemsSource="{Binding tabHeaders}"                                       
          ItemTemplate="{StaticResource ResourceKey=TabList}" 
          Height="32" />
</StackPanel>