Как я могу получить собственный трек для слайдера, чтобы рисовать дополнительные пальцы? - PullRequest
1 голос
/ 10 февраля 2012

Я работаю над пользовательским слайдером диапазона двумя большими пальцами. Я создал собственный класс 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.

Edit:

Я открыл PresentationFramework.dll в дизассемблере IL и заметил, что в System.Windows.Controls.Primitives.Track есть свойство с именем ThumbCenterOffset, не уверенное, отвечает ли он за размещение большого пальца в правильном месте.

...