我正在学习 WPF,我有一个关于绑定 ComboBox 的问题
我有一个简单的 WPF 窗口,其中包含以下控件:顶部的 ComboBox 和下方的 TabControl。
我用两个标准的 TabItems 填充 tabcontrol。然后我向它添加了更多选项卡 - 但是这些是我自己的“MyTab”类,它只是继承了 TabItem。我没有覆盖任何东西或做任何异国情调的事情,我只是添加了一些公共属性。
我想使用 ComboBox 作为导航工具。每个选项卡都有一个标题,相同的标题应该成为 ComboBox 中的一个项目。如果从 ComboBox 中选择,它应该使相应的选项卡成为活动选项卡。
这是我在 ComboBox 上的设置:
<Window.Resources>
<DataTemplate x:Key="EmployeeListTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Header}" />
</StackPanel>
</DataTemplate>
</Window.Resources>
..然后在 Xaml 中进一步下降...
<ComboBox Grid.Row="1" Width="500" Name="qlist"
ItemsSource="{Binding ElementName=tabControl1, Path=Items}"
ItemTemplate="{StaticResource EmployeeListTemplate}" />
所以我只是绑定到 TabControl 的 Item 集合并选择 Header 作为 SelectedItem 的属性来显示。
它有效,当我单击组合框时,标题确实显示为单个文本项。但是,当我进行实际选择时,该选项卡本身会呈现在该组合框的选择区域中!
我该如何解决?为什么它使用列表的 Header 属性,但是当我从列表中选择时,它显示的值变成了实际的 TabItem 对象?我觉得我错过了一些明显的东西
顺便说一句,我知道我说过我想用它来控制导航,但我把所有这些都去掉了,等我弄清楚这个令人抓狂的事情后我会担心的。
仔细看 - 当我从组合框中选择 tabItem1 时,它实际上在控件内重新呈现了该选项卡项。您可以看到它的顶部,周围是列表项使用的标准蓝色选择背景。令人抓狂。
我在这里做错了什么?谢谢你的帮助