我正在研究一个带有两个拇指的自定义范围滑块。我创建了一个自定义 Track 类,并更新了滑块的控件模板以支持两个拇指。问题是,我还没有弄清楚为什么我的新拇指没有出现。
我的自定义范围类看起来像这样:
public class RangeTrack : Track
{
public RangeTrack() : base() { }
public Thumb LeftThumb { get; set; }
public ThumbRightThumb { get; set; }
}
我对现有滑块控件模板的编辑看起来像这样:
...
<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>
...
它仍然绘制原始的拇指。但是,不是我添加的两个新的。我不确定 RangeTrack 中是否应该做一些特别的事情OnRender
。
编辑:
我在 IL Disassembler 中打开了 PresentationFramework.dll,我注意到 System.Windows.Controls.Primitives.Track 中有一个名为 ThumbCenterOffset 的属性,不确定他是否负责将 Thumb 放置在正确的位置。