WPF ScrollBar: горизонтальный и вертикальный от одного шаблона? - PullRequest
0 голосов
/ 29 октября 2010

У меня есть требование пересмотреть ScrollBar, так что требуется только один Template вместо отдельных горизонтальных и вертикальных. Утверждение дизайнера заключается в том, что ScrollBar можно вращать на Trigger (ориентация = горизонтальная), а команды менять местами на кнопки.

Поскольку одиночный Template настроен как Grid со строками, горизонтальная ScrollBar при повороте застревает в центре обзора, показывая только левую и правую кнопки. Похоже, это связано с тем, что высота центрального * ряда является высотой области дорожки, поэтому она не растягивается. Привязка в Trigger к высоте чего-то вроде родительского ScrollViewer ActualWidth вызывает обычный стекопоток.

Есть мысли? Я предполагаю, что есть причина, по которой во всех примерах шаблоны горизонтальные и вертикальные разделены.

1 Ответ

1 голос
/ 29 октября 2010

Неважно. Я понял это:

            <Trigger Property="Orientation" Value="Horizontal">

            <!-- Rotate the ScrollBar from Vertical to Horizontal -->
            <Setter Property="LayoutTransform" TargetName="gLayoutRoot">
                <Setter.Value>
                    <RotateTransform Angle="90"/>
                </Setter.Value>
            </Setter>

            <!-- Change Track Orientation back to Vertical -->
            <Setter TargetName="PART_Track" Property="Orientation" Value="Vertical"/>
            <Setter TargetName="PART_Track" Property="IsDirectionReversed" Value="false"/>

            <!-- Change the commands to do Horizontal commands -->
            <Setter Property="Command" Value="ScrollBar.LineRightCommand" TargetName="DecreaseRepeat"/>
            <Setter Property="Command" Value="ScrollBar.LineLeftCommand" TargetName="IncreaseRepeat"/>
            <Setter Property="Command" Value="ScrollBar.PageLeftCommand" TargetName="PageDown"/>
            <Setter Property="Command" Value="ScrollBar.PageRightCommand" TargetName="PageUp"/>

        </Trigger>

Затем в стиле установите все на Stretch или Auto.

        <Setter Property="HorizontalAlignment" Value="Stretch"/> 
    <Setter Property="VerticalAlignment" Value="Stretch"/>
    <Setter Property="Width" Value="Auto"/> 
    <Setter Property="Height" Value="Auto"/>

К счастью, одна из тех вещей, которые сработали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...