flip scrollbar WPF

前端 未结 3 1246
深忆病人
深忆病人 2021-01-21 00:46

Hi I am building a control that shows a ruler from 0 to a maximum. The 0 value is at the bottom and the maximum is in a higher y then the 0(The maximum is not visible until we s

相关标签:
3条回答
  • 2021-01-21 01:11

    I got inspired by some answers here and decided to add mine for further reference.

    For the scrollbar it doesn't really matter whether it is rotated 180 degrees or flipped upside down but for other controls (or some style) it may be important.

    Here's my code:

    <ScrollBar Orientation="Vertical" RenderTransformOrigin="0.5,0.5">
        <ScrollBar.RenderTransform>
            <ScaleTransform ScaleY="-1"/>
        </ScrollBar.RenderTransform>
    </ScrollBar>
    
    0 讨论(0)
  • 2021-01-21 01:24

    How about using a value converter to negate your Minimum, Maximum and Value properties. That way the scrollbar will act as though you flipped it.

    code:

    class NegativeValueConverter : IValueConverter
    {
      object Convert(object value, ...)
      {
        return -System.Convert.ToDouble(value);
      }
    
      object ConvertBack(object value, ...)
      {
        return -System.Convert.ToDouble(value);
      }
    }
    

    xaml:

    <Resources>
      <local:NegativeValueConverter x:Key="negative" />
    </Resources>
    <ScrollBar Value="{Binding RulerValue, Converter={StaticResource negative}"
               Minimum="{Binding RulerMinimum, Converter={StaticResource negative}"
               Maximum="{Binding RulerMaximum, Converter={StaticResource negative}"/>
    
    0 讨论(0)
  • 2021-01-21 01:36

    Dudes, think simple:

                <ScrollBar.RenderTransform>
                    <RotateTransform Angle="180"/>
                </ScrollBar.RenderTransform>
    

    Regards

    0 讨论(0)
提交回复
热议问题