1

我正在研究一个带有两个拇指的自定义范围滑块。我创建了一个自定义 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 放置在正确的位置。

4

0 回答 0