我正在研究一个带有两个拇指的自定义范围滑块。我已经创建了一个自定义Track类,并且我已经更新了我的滑块控件模板以支持两个拇指。问题是,我还没弄清楚为什么我的新拇指没有出现。
我的自定义范围类看起来像这样:
public class RangeTrack : Track
{
public RangeTrack() : base() { }
public Thumb LeftThumb { get; set; }
public ThumbRightThumb { get; set; }
}
我对existing slider control template的编辑看起来像这样:
...
<local:RangeTrack x:Name="PART_Track" Grid.Row="1">
<local:RangeTrack.LeftThumb>
<Thumb Name="LeftThumb" Style="{StaticResource
HorizontalSliderThumbStyle}" />
</local:RangeTrack.LeftThumb>
<local:RangeTrack.RightThumb>
<Thumb Name="RightThumb" Style="{StaticResource
HorizontalSliderThumbStyle}" />
</local:RangeTrack.RightThumb>
<local:RangeTrack.Thumb>
<Thumb Name="Thumb" Style="{StaticResource
HorizontalSliderThumbStyle}" />
</local:RangeTrack.Thumb>
</local:RangeTrack>
...
它仍然绘制了原始的Thumb。但是,不是我添加的两个新的。我不确定在RangeTrack的OnRender
中是否应该做一些特殊的事情。
编辑:
我在IL反汇编程序中打开了PresentationFramework.dll,我注意到System.Windows.Controls.Primitives.Track中有一个名为ThumbCenterOffset的属性,不确定他是否负责将Thumb放在正确的位置。