【发布时间】:2011-05-07 13:24:09
【问题描述】:
嗨 我正在构建一个显示从 0 到最大值的标尺的控件。 0 值位于底部,最大值位于高于 0 的 y 中(最大值在我们滚动到它之前是不可见的)。 问题是,当 0 下降而最大值上升时。滚动条的0值向上,最大值向下。 我希望滚动条会被翻转。 我该怎么做?
【问题讨论】:
嗨 我正在构建一个显示从 0 到最大值的标尺的控件。 0 值位于底部,最大值位于高于 0 的 y 中(最大值在我们滚动到它之前是不可见的)。 问题是,当 0 下降而最大值上升时。滚动条的0值向上,最大值向下。 我希望滚动条会被翻转。 我该怎么做?
【问题讨论】:
伙计们,想想简单:
<ScrollBar.RenderTransform>
<RotateTransform Angle="180"/>
</ScrollBar.RenderTransform>
问候
【讨论】:
<ScrollBar.RenderTransformOrigin> <Point X="0.5" Y="0.5"/> </ScrollBar.RenderTransformOrigin>
如何使用值转换器来否定您的最小值、最大值和值属性。这样滚动条就好像你翻转了它一样。
代码:
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}"/>
【讨论】:
我从这里的一些答案中得到启发,并决定添加我的以供进一步参考。
对于滚动条来说,它是旋转 180 度还是上下翻转并不重要,但对于其他控件(或某些样式)来说,它可能很重要。
这是我的代码:
<ScrollBar Orientation="Vertical" RenderTransformOrigin="0.5,0.5">
<ScrollBar.RenderTransform>
<ScaleTransform ScaleY="-1"/>
</ScrollBar.RenderTransform>
</ScrollBar>
【讨论】: