我正在尝试在列表视图或列表框中显示打开的标签名称列表(推荐?)。
经历了不同类型的绑定选项,我能够绑定到单个选项卡名称,但它显示垂直而不是水平。这是我的XAML:
<ListView DockPanel.Dock="Left"
Height="352"
Name="listView1"
Width="132"
ItemsSource="{Binding ElementName=RulesTab, Path=Name}"
IsSynchronizedWithCurrentItem="True"
FlowDirection="LeftToRight"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
DataContext="{Binding}">
任何指针都会非常受欢迎,因为我希望能够看到所有选项卡的列表打开,然后双击一个以使选项卡成为焦点。非常感谢!
答案 0 :(得分:1)
简化示例如何使用listview枚举选项卡控件中的选项卡:
<TabControl Name="MyTabControl">
<TabItem Header="Tab1">
</TabItem>
<TabItem Header="Tab2">
</TabItem>
</TabControl>
<ListView DockPanel.Dock="Left"
ItemsSource="{Binding ElementName=MyTabControl, Path=Items}"
DataContext="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
答案 1 :(得分:1)
我仍然不确定你到底想要什么,无论如何,如果需要,可以调整。
首先,如果绑定到特定项目,您将始终拥有一个项目,则需要将ItemsSource
设置为集合。
假设您想要列出列表中所有标签的名称或标题,可以将标签控件的Items
设置为ItemsSource
,然后应用ItemTemplate
,一些示例代码:
<ListBox ItemsSource="{Binding ElementName=TabControlSrc, Path=Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}" Margin="5"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如果您不使用ItemTemplate
,您将收到错误,因为同一项目只能是一位父母的视觉孩子。
坦率地说,这似乎有点无意义,因为它只是重申了你的标签,我误解了什么?如果是,请进一步澄清
编辑:哦哈哈,三个几乎相同的答案......
答案 2 :(得分:0)
以下是TabControl
和ListBox
的示例,其中显示了TabItems
的名称:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TabControl Grid.Column="0" Name="tabControl1">
<TabItem Header="Tab1"/>
<TabItem Header="Tab2"/>
<TabItem Header="Tab3"/>
<TabItem Header="Tab4"/>
</TabControl>
<ListBox Grid.Column="1" ItemsSource="{Binding Items, ElementName=tabControl1}">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<EventSetter Event="MouseDoubleClick" Handler="ListBoxItem_DoubleClick"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
这是背后的代码:
private void ListBoxItem_DoubleClick(object sender, MouseButtonEventArgs mouseButtonEventArgs)
{
var tabItem = (TabItem)((ListBoxItem)sender).Content;
tabControl1.SelectedItem = tabItem;
}
已编辑以添加双击行为。