【问题标题】:Slider.Minimum property negative value issueSlider.Minimum 属性负值问题
【发布时间】:2012-11-17 13:50:51
【问题描述】:

我可能还有另一个无法解决的问题。在 Silverlight XAML 中,我无法通过 StyleSlider.Minimum 属性设置负值。我的意思是,这是可能的,但结果出乎意料。在 WPF 中,这确实可以正常工作。

<StackPanel Width="200" Orientation="Vertical">
    <StackPanel.Resources>
        <Style TargetType="Slider" x:Key="style">
            <Setter Property="Minimum" Value="-10" />
            <Setter Property="Maximum" Value="10" />
            <Setter Property="Value" Value="0" />
        </Style>
    </StackPanel.Resources>
    <!-- Here it is not working -->
    <Slider Style="{StaticResource style}"/>
    <!-- Here it works as expected, as it is not styled -->
    <Slider Minimum="-10" Maximum="10" Value="0" />
</StackPanel>

结果是这样的:

但显然两个拇指应该在同一个位置(在Slider的中间)。

事实上,它看起来就像Minimum 值 (-10) 接受,但随后 Maximum 值变为 0,这就是为什么第一个滑块的拇指对齐到右侧(Value 为 0,Maximum 也为 0)。

【问题讨论】:

  • 问题不是Slider上的Minimun属性,而是Maximum属性,导致样式中设置的值没有被应用。
  • 是的,我在帖子末尾写了这个,但它仍然只出现在否定的Minimum

标签: silverlight xaml styles slider silverlight-5.0


【解决方案1】:

问题是滑块的HorizontalTemplate。如果将 Slider 的 Orientation 更改为 Vertical,则样式中定义的值将按预期应用。

更新: 解决方案是在样式中也设置方向。然后它按预期工作。

<Style TargetType="Slider" x:Key="style">
  <Setter Property="Minimum"
          Value="-10" />
  <Setter Property="Maximum"
          Value="10" />
  <Setter Property="Value"
          Value="0" />
  <Setter Property="Orientation"
          Value="Horizontal" />
 </Style>

【讨论】:

  • 你确定吗?你用哪个设计师?我使用 Visual Studio 2010。您的建议没有改变我的环境中的任何内容。但我注意到另一件事:如果我手动将Maximum="10" 应用于样式滑块(&lt;Slider Maximum="10" Style="{StaticResource style}" /&gt;),Thumb 会将自身置于正确的位置,然后我删除它(Maximum="10"),Thumb 不是返回右侧(停留在中间),直到我在设计器中重新加载 xaml。如果你用你的解决方案重新加载设计器会发生什么?还能用吗?
  • @infografnet 我正在使用 Visual Studio 2012。
猜你喜欢
  • 2016-12-18
  • 2019-01-15
  • 1970-01-01
  • 2021-07-22
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 2023-02-15
相关资源
最近更新 更多