我试图弄清楚如何使 AvalonDock 的 VS2010 样式更像 VS2010。我运行的问题是,当有更多的标签时比在标题区域中适合时,用户没有指示有更多的标签。
我认为选项卡标题只是被剪裁而不可见。我有一个 VS2010 样式的自定义副本并转到 DocumentPane 样式:
<!--DocumentPane-->
<Style x:Key="{x:Type ad:DocumentPane}" TargetType="{x:Type ad:DocumentPane}"> ...
并发现选项卡标题(我认为)为“ad:DocumentTabPanel”。我将它包装在 ScrollViewer 中:
<ScrollViewer Style="{StaticResource ResourceKey=TabHeaderScrollViewer}" CanContentScroll="True">
<ad:DocumentTabPanel
x:Name="paneTabsPanel"
Panel.ZIndex ="1"
IsItemsHost="True"
TabItemStyle="{StaticResource CustomDocumentTabItemStyle}"/>
</ScrollViewer>
滚动查看器设置为具有自定义样式:
<Style x:Key="TabHeaderScrollViewer" TargetType="ScrollViewer">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ScrollViewer">
<Grid Background="{TemplateBinding Background}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<RepeatButton Command="ScrollBar.PageLeftCommand"></RepeatButton>
<ScrollContentPresenter Grid.Column="1"
x:Name="ScrollContentPresenter"
Cursor="{TemplateBinding Cursor}"
Margin="{TemplateBinding Padding}"
ContentTemplate="{TemplateBinding ContentTemplate}"/>
<RepeatButton Grid.Column="2" Command="ScrollBar.PageRightCommand"></RepeatButton>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我遇到的问题是,即使我加载了大量选项卡,滚动也不起作用。我不认为这是我的造型问题。选项卡标题似乎不在 VisualTree 中或具有折叠的可见性。我已经浏览了 AvalonDock 源代码一段时间,但我看不到标题是如何隐藏的。
我已经不得不对一些 AvalonDock 类进行子类化,因为我需要它们的附加属性。
有人可以解释/帮助我想出一个滚动标签的解决方案吗?