【问题标题】:flip scrollbar WPF翻转滚动条 WPF
【发布时间】:2011-05-07 13:24:09
【问题描述】:

嗨 我正在构建一个显示从 0 到最大值的标尺的控件。 0 值位于底部,最大值位于高于 0 的 y 中(最大值在我们滚动到它之前是不可见的)。 问题是,当 0 下降而最大值上升时。滚动条的0值向上,最大值向下。 我希望滚动条会被翻转。 我该怎么做?

【问题讨论】:

    标签: c# wpf scrollbar


    【解决方案1】:

    伙计们,想想简单:

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

    问候

    【讨论】:

    • 并保持在相同的位置,添加:&lt;ScrollBar.RenderTransformOrigin&gt; &lt;Point X="0.5" Y="0.5"/&gt; &lt;/ScrollBar.RenderTransformOrigin&gt;
    【解决方案2】:

    如何使用值转换器来否定您的最小值、最大值和值属性。这样滚动条就好像你翻转了它一样。

    代码:

    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}"/>
    

    【讨论】:

    • 谢谢,我还没有尝试,但我认为它应该可以解决问题。我昨晚想做一个从 ScrollBar 继承的类并覆盖 Value 属性以返回最大值但是,在覆盖 ScrollBar 类之后,新类没有显示,我不知道为什么。
    【解决方案3】:

    我从这里的一些答案中得到启发,并决定添加我的以供进一步参考。

    对于滚动条来说,它是旋转 180 度还是上下翻转并不重要,但对于其他控件(或某些样式)来说,它可能很重要。

    这是我的代码:

    <ScrollBar Orientation="Vertical" RenderTransformOrigin="0.5,0.5">
        <ScrollBar.RenderTransform>
            <ScaleTransform ScaleY="-1"/>
        </ScrollBar.RenderTransform>
    </ScrollBar>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多