Возникли проблемы со стилем и редактированием панели вкладок документа AvalonDock

Я пытаюсь понять, как сделать стиль 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, потому что мне нужны были дополнительные свойства для них.

Может ли кто-нибудь объяснить/помочь мне придумать решение для прокрутки вкладок?


person Mike G    schedule 24.10.2011    source источник


Ответы (1)


Проблема решилась очень просто. Мне пришлось установить HorizontalScrollBarVisibility="Auto". Я проверил http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.horizontalscrollbarvisibility.aspx, чтобы узнать, какое значение по умолчанию для этого свойства, но не видел ни там, ни на странице ScrollViewer. Я предполагаю, что по умолчанию установлено значение «Скрытый».

В любом случае, если установлено значение «Авто», кнопки повтора отображаются только при переполнении вкладок.

person Mike G    schedule 01.11.2011