WPF ScrollBar: горизонтальный и вертикальный от одного шаблона?
У меня есть требование пересмотреть ScrollBar
так что только один Template
требуется вместо отдельных горизонтальных и вертикальных. Утверждение дизайнера заключается в том, что ScrollBar
можно вращать на Trigger
(Ориентация = Горизонтальная), и команды меняются местами на кнопках.
Так как сингл Template
настроен как Grid
с рядами, горизонтальный ScrollBar
при повороте застревает в центре вида, показывая только левую и правую кнопки. Похоже, это связано с тем, что высота центрального * ряда является высотой области дорожки, поэтому она не растягивается. Связывание в Trigger
на высоту чего-то вроде родителя ScrollViewer
ActualWidth
вызывает обычный стекопоток.
Какие-нибудь мысли? Я предполагаю, что есть причина, по которой все примеры имеют горизонтальный и вертикальный шаблоны отдельно.
1 ответ
Не берите в голову. Я понял:
<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"/>
К счастью, одна из тех вещей, которые сработали.