2010-03-12 45 views
3

我想在1.0显示一个滑块范围从0.5到1.5与只有一个刻度标记的中心和默认值。在1.0隐藏在蜱Min和Max在WPF滑块

<Slider Minimum="0.5" Maximum="1.5" 
     IsMoveToPointEnabled="True" IsSnapToTickEnabled="False" 
     Orientation="Horizontal" 
     Ticks="1.0" 
     TickPlacement="BottomRight" 
     Value="{Binding SomeProperty, Mode=TwoWay}"/> 

然而,除了一个刻度标记此滑块还示出了在0.5和1.5,即,最小值和最大值的刻度标记:我已经定义了一个滑块如下。

有没有办法隐藏这些最小/最大刻度线?我检查了所有的属性,并尝试改变其中的一些,但迄今为止没有成功。

回答

3

一种方式做这将是提供自己的滑块控件模板。如果您查看默认的Slider ControlTemplate(可在MSDN上获得),您会看到Slider上的Ticks由名为TickBar的类实现。
继承了TickBar类并覆盖其的OnRender()方法可以让你画不过你想要的蜱。您可以在这里获得真正的创意:例如编号的刻度,不同的颜色/样式等......或者您的情况下,不要在最小/最大位置绘制刻度。
则替换自定义滑块控件模板默认TickBar跟你的新TickBar SANS最小/最大刻度,你是好去。

有关从TickBar继承看看这个代码示例: http://social.msdn.microsoft.com/forums/en-US/wpf/thread/6b926273-b0a1-43ab-be81-f2e9b42d701a

有关显示编号蜱但你应该能够了解你需要从它知道什么该网站举行了会谈。

+0

感谢您的回答。我没有尝试这个,但我想它会起作用。但是,我正在寻找一个更简单的解决方案,比如设置一个属性。如果您提供“Ticks”属性,然后在其他位置显示刻度标记,我认为这是糟糕的设计。更糟糕的是,你不能让他们离开(轻松)。无论如何,我想我必须坚持下去,因为我不想/不能像你所描述的那样。无论如何,我已经接受了你的答案,因为它可以解决问题。 – gehho 2010-05-17 09:19:24

-1

请注意,您可以在前景滑块设置透明,这将吸引任何/所有刻度线不可见。然后,可以使用滑块的外侧的元件/控制添加的中心蜱(例如,放两者滑块并以相同的格单元中的线形状元件,中心对准线元素)。

不优雅,但具有容易实现的优点。

+0

您可以将TickPlacement设置为“无”,以便根本不绘制任何刻度标记。 – 2015-09-03 09:32:34

+0

问题是如何拥有一个刻度线,而不是如何去除所有的刻度线。我的答案是针对那些不想使用ControlTemplate的人,这些人超出了许多人的能力/兴趣水平。 – dapi 2016-01-03 19:41:46

+0

尽管您的解决方案的第一步是删除所有刻度。只需将TickPlacement设置为“无”即可轻松完成。 – 2016-01-04 07:59:19