wpf - 在 WPF 中将 slider 值绑定(bind)到 slider 的高度

标签 wpf templates wpf-controls slider

我在 WPF 中遇到数据绑定(bind)问题。

我想“自定义”一个 slider ,当您将 slider 向右移动时,拇指会变大,而当您将 slider 向左移动时,拇指会缩小。

所以我编辑了 slider 的模板并更改了 slider 的外观,使 slider 看起来像我想要的那样。

但现在我必须将拇指的高度绑定(bind)到 slider 的值,但我不知道它是如何工作的。

我做了一些简单的数据绑定(bind)操作,但我不知道如何将 slider 模板内的“拇指高度”绑定(bind)到 slider 所在的用户控件内的 slider 值。

那我该怎么做呢?

最佳答案

您可以使用 RelativeSource 绑定(bind)(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>

希望这对您有所帮助。

干杯安瓦卡

关于wpf - 在 WPF 中将 slider 值绑定(bind)到 slider 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689406/

相关文章:

C++ 访问尚未定义的模板参数成员

c# - 在 StackPanel wpf 中包装内容

WPF:如何在弹出窗口中淡入和缩放用户控件

c# - MVVMLight 中 IoC 容器的好处

wpf - Entity Framework CTP5 代码优先,WPF - MVVM 建模

c# - 具有不同样式或模板的 WPF 自定义控件?

c# - wpf Canvas 双击

wpf - DataGridCheckBoxColumn 的单击事件

templates - Jinja 变量的范围可以超出内部 block 吗?

c++ - 类模板化成员函数和返回类型推断