2

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 クラスのいくつかは、追加のプロパティが必要だったため、すでにサブクラス化する必要がありました。

誰かがタブをスクロールする解決策を説明/助けてくれますか?

4

1 に答える 1

3

問題は非常に簡単に解決されました。Horizo​​ntalScrollBarVisibility="Auto" を設定する必要がありました。http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.horizo​​ntalscrollbarvisibility.aspxをチェックして、このプロパティの既定値を確認しましたが、そこまたはScrollViewer ページ。デフォルトで「非表示」になっていると思います。

とにかく、「自動」に設定すると、タブがオーバーフローした場合にのみ繰り返しボタンが表示されます。

于 2011-11-01T11:37:59.140 に答える