我正在试图弄清楚如何使VS2010风格让AvalonDock更像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类,因为我需要其他属性。
有人可以解释/帮我提出滚动标签的解决方案吗?
答案 0 :(得分:3)
问题很简单地解决了。我必须设置HorizontalScrollBarVisibility =“Auto”。我检查http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.horizontalscrollbarvisibility.aspx以查看此属性的默认值,但没有在那里看到或在ScrollViewer页面上看到。我认为它默认为“隐藏”。
无论如何,一旦设置为“自动”,只有当标签溢出时才会显示重复按钮。