Привязка значения ползунка к высоте его большого пальца в WPF - PullRequest
3 голосов
/ 22 апреля 2010

У меня проблема с привязкой данных в WPF.

Я бы хотел «настроить» ползунок так, чтобы большой палец увеличивался при перемещении ползунка вправо, а большой палец уменьшался при перемещении ползунка влево.

Итак, я отредактировал шаблон для слайдера и изменил его внешний вид, чтобы слайдер выглядел так, как я хочу.

Но теперь мне нужно привязать высоту большого пальца к значению ползунка, но я не знаю, как это работает.

Я сделал несколько простых вещей, связанных с привязкой данных, но не могу понять, как я могу связать эту «высоту большого пальца», которая находится внутри шаблона моего слайдера, со значением слайдера, которое находится внутри пользовательского элемента управления, где находится мой слайдер.

Так как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 22 апреля 2010

Вы можете использовать привязку RelativeSource (Height="{Binding Value, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Slider}}}").

Вот пример стиля большого пальца, который зависит от Slider.Value:

<Style x:Key="SliderThumbStyle" TargetType="{x:Type Thumb}">
  <Setter Property="SnapsToDevicePixels" Value="true"/>
  <Setter Property="OverridesDefaultStyle" Value="true"/>
  <Setter Property="Width" Value="14"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type Thumb}">
        <Ellipse 
          Name="Ellipse" 
          Fill="#C0C0C0"
          Stroke="#404040" 
          Height="{Binding Value, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Slider}}}"
          StrokeThickness="1" />
        <ControlTemplate.Triggers>
          <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="Ellipse" Property="Fill" Value="#808080"/>
          </Trigger>
          <Trigger Property="IsEnabled" Value="false">
            <Setter TargetName="Ellipse" Property="Fill" Value="#EEEEEE"/>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

Надеюсь, это поможет.

Приветствия Anvaka

1 голос
/ 22 апреля 2010

Проверьте мой вопрос и ответ здесь -

В WPF / XAML как изменить размер абзаца текста с помощью полосы прокрутки?

Если у вас есть что-то вроде этого:

<ScrollBar x:Name="scroll1"></ScrollBar>

<Image Height="{Binding ElementName=scroll1, Path=Value}" />

NB Я не на 100% уверен в синтаксисе изображения, поэтому вам нужно принять это за псевдокод.

...