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 クラスのいくつかは、追加のプロパティが必要だったため、すでにサブクラス化する必要がありました。
誰かがタブをスクロールする解決策を説明/助けてくれますか?