WPF-组合框不显示selecteditem
我是WPF和VB的新手,我很难弄清楚为什么我在组合框下拉列表中选择的东西在选择后没有显示在组合框中 我通过绑定和DataContext填充组合框。这是我的Settings.xaml文件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
<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>