UI⑥Control族控件Slider

Object->DispatcherObject->DependencyObject->Visual->UIElement->FrameworkElement->Control->RangeBase->Slider


Slider

表示一个控件,该控件可让用户通过沿 Thumb 移动 Track 控件从一个值范围中进行选择。

Slider控件允许用户从一系列值中选择值。 下图显示了控件的一个示例 Slider 。

滑块控件的示例

Slider 图

可以 Slider 通过设置控件的属性来自定义控件。 下面的列表描述了可自定义的的一些属性 Slider :

  •  Slider 的方向(水平或垂直)。

  •  Slider 轨迹上的刻度线位置。

  •  Slider 显示的工具提示显示的当前值。

  •  Slider  Thumb对齐刻度线的功能,或沿的任何点。

  •  Slider沿增加值的方向 。

有关如何自定义控件的详细信息 Slider ,请参阅单个成员。

Slider 重写属性的元数据 Maximum ,并将其默认值设置为10。 有关详细信息,请参阅依赖项属性概述

 备注

如果的值 Slider 已进行动画处理,则在动画完成后,用户可能无法再与 Slider 控件交互。 请参阅 如何:使用情节提要对属性进行动画处理后设置该属性 ,以获取有关如何在动画上还原的用户控件的选项 Slider 。

若要对多个控件应用相同的属性设置 Slider ,请使用 Style 属性。 您可以修改默认值 ControlTemplate ,为控件指定独特的外观。 有关创建的详细信息 ControlTemplate ,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于的部分和状态 Slider ,请参阅 滑块样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

 备注

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

自定义滑块控件

要将相同的属性设置应用于多个Slider控件,请使用Style属性。您可以修改默认的ControlTemplate以使控件具有唯一的外观。有关创建ControlTemplate的更多信息,请参见通过创建ControlTemplate自定义现有控件的外观。要查看特定于Slider的零件和状态,请参见Slider样式和模板

此控件的依赖项属性可以由控件的默认样式设置。如果使用默认样式设置属性,则当控件出现在应用程序中时,该属性可能会从其默认值更改。默认样式由运行应用程序时使用的桌面主题确定。有关更多信息,请参见默认WPF主题

设置视觉属性仅在该属性同时存在于控件的默认模板中并且通过使用TemplateBinding进行设置时才有效。您可以在通过创建ControlTemplate定制现有控件的外观的更改控件的视觉结构”部分中找到视觉属性列表。

字段
名称备注权限
AutoToolTipPlacementProperty标识 AutoToolTipPlacement 依赖项属性。public static readonly
AutoToolTipPrecisionProperty标识 AutoToolTipPrecision 依赖项属性。public static readonly
DelayProperty标识 Delay 依赖项属性。public static readonly
IntervalProperty标识 Interval 依赖项属性。public static readonly
IsDirectionReversedProperty标识 IsDirectionReversed 依赖项属性。public static readonly
IsMoveToPointEnabledProperty标识 IsMoveToPointEnabled 依赖项属性。public static readonly
IsSelectionRangeEnabledProperty标识 IsSelectionRangeEnabled 依赖项属性。public static readonly
IsSnapToTickEnabledProperty标识 IsSnapToTickEnabled 依赖项属性。public static readonly
OrientationProperty标识 Orientation 依赖项属性。public static readonly
SelectionEndProperty标识 SelectionEnd 依赖项属性。public static readonly
SelectionStartProperty标识 SelectionStart 依赖项属性。public static readonly
TickFrequencyProperty标识 TickFrequency 依赖项属性。public static readonly
TickPlacementProperty标识 TickPlacement 依赖项属性。public static readonly
TicksProperty标识 Ticks 依赖项属性。public static readonly
属性
名称备注权限
AutoToolTipPlacement获取或设置在按下 Thumb 时是否显示包含 Slider 的当前值的工具提示。 如果显示工具提示,此属性还指定工具提示的位置。get; set;
AutoToolTipPrecision获取或设置在工具提示中的 Slider 的 Value 的小数点右侧显示的小数位数。get; set;
DecreaseLarge获取一个命令,该命令将 Slider 的值减少与 LargeChange 属性相同的量。get;
DecreaseSmall获取一个命令,该命令将 Slider 的值减少与 SmallChange 属性相同的量。get;
Delay获取或设置在按下 RepeatButton 之后等待执行用于移动 Thumb 的命令(如 DecreaseLarge 命令)的时间(以毫秒为单位)。get; set;
IncreaseLarge获取一个命令,该命令将滑块的值增加与 LargeChange 属性相同的量。get;
IncreaseSmall获取一个命令,该命令将滑块的值增加与 SmallChange 属性相同的量。get;
Interval获取或设置当用户单击 RepeatButton 的 Slider 时增加或减少命令之间的时间量(以毫秒为单位)。get; set;
IsDirectionReversed获取或设置增加值的方向。get; set;
IsMoveToPointEnabled获取或设置一个值,该值指示是否立即将 Slider 的 Thumb 移动到在鼠标指针悬停在 Slider 轨道的上方时鼠标单击的位置。get; set;
IsSelectionRangeEnabled获取或设置一个值,该值指示 Slider 是否沿 Slider 显示选择范围。get; set;
IsSnapToTickEnabled获取或设置一个值,该值指示 Slider 是否自动将 Thumb 移动到最近的刻度线。get; set;
MaximizeValue获取一个命令,该命令将 SliderValue 设置为 Maximum 值。get;
MinimizeValue获取一个命令,该命令将 SliderValue 设置为 Minimum 值。get;
Orientation获取或设置 Slider 的方向。get; set;
SelectionEnd获取或设置 Slider 的指定选择内容的最大值。get; set;
SelectionStart获取或设置 Slider 的指定选择内容的最大值。get; set;
TickFrequency获取或设置刻度线之间的间隔。get; set;
TickPlacement获取或设置与 Track 的 Slider 相关的刻度线的位置。get; set;
Ticks获取或设置为 Slider 显示的刻度线的位置。get; set;
方法
名称备注权限
ArrangeOverride排列 Slider 的内容并确定其 Sizeprotected
OnApplyTemplate生成 Slider 控件的可视化树。public
OnCreateAutomationPeer为 Slider 创建一个 AutomationPeerprotected
OnDecreaseLarge响应 DecreaseLarge 命令。protected
OnDecreaseSmall响应 DecreaseSmall 命令。protected
OnIncreaseLarge响应 IncreaseLarge 命令。protected
OnIncreaseSmall响应 IncreaseSmall 命令。protected
OnMaximizeValue响应 MaximizeValue 命令。protected
OnMaximumChanged响应 Maximum 属性值的更改。protected
OnMinimizeValue响应 MinimizeValue 命令。protected
OnMinimumChanged响应 Minimum 属性值的更改。protected
OnPreviewMouseLeftButtonDown提供用于 PreviewMouseLeftButtonDown 路由事件的类处理。protected
OnThumbDragCompleted提供用于当用户停止拖动 DragCompleted 的 Thumb 时发生的 Slider 事件的类处理。protected
OnThumbDragDelta提供用于当用户拖动 DragDelta 的 Thumb 时发生的 Slider 事件的类处理。protected
OnThumbDragStarted提供用于当用户开始拖动 Slider 的 Thumb 时发生的 DragStarted 事件的类处理。protected
OnValueChanged当 Value 属性更改时,更新 Slider 的当前位置。protected

 

IsSnapToTickEnabled

Thumb是否移动到鼠标单击点,还是对齐到Ticks。

IsDirectionReversed

起始点和终点的位置。

IsMoveToPointEnabled

鼠标单击刻度,slider是否移动到点击位置。

Delay、Interval

Delay、Interval是对 RepeatButton响应的属性,如上图。

Ticks

显示的刻度

LargeChange

点击RepeatButton,一次响应会移动一个LargeChange。

SmallChange

一次响应键盘的↑、↓、←、→,会移动一个SmallChange。


XAML范例

<Window
    x:Class="SliderDemo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:SliderDemo"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <StackPanel Background="LightSkyBlue">
        <!--Ticks="1,10,20,30,40,50,60,70,80,90,100"-->
        <Slider x:Name="slider"
            Maximum="100"
            Minimum="0"
            LargeChange="5"
            SmallChange="1"
            
            AutoToolTipPlacement="BottomRight"
            AutoToolTipPrecision="4"
            
            Delay="3000"
            Interval="1000"
                
            IsDirectionReversed="False"
            IsMoveToPointEnabled="True"
            
            IsSnapToTickEnabled="False"
            Orientation="Horizontal"            
       
            TickFrequency="10"
            TickPlacement="Both"
              
            IsSelectionRangeEnabled="True"    
            SelectionEnd="90"
            SelectionStart="10"
            
                
            ValueChanged="OnValueChanged"/>
        <TextBlock/>
    </StackPanel>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace SliderDemo
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        //不适用绑定,是为了展示事件
        private void OnValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            foreach (var item in ((sender as Slider).Parent as StackPanel).Children)
            {
                if (item is TextBlock) (item as TextBlock).Text = (sender as Slider).Value.ToString();
            }           
        }
    }
}

 


C#范例

<Window
    x:Class="SliderDemo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:SliderDemo"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">

</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace SliderDemo
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            Slider slider = new Slider { Maximum=100,
                Minimum=0,
                LargeChange=5,
                SmallChange=1,
                AutoToolTipPlacement=System.Windows.Controls.Primitives.AutoToolTipPlacement.BottomRight,
                AutoToolTipPrecision=4,
                Delay=3000,
                Interval=1000,
                IsDirectionReversed=false,
                IsMoveToPointEnabled=true,
                IsSnapToTickEnabled=false,
                Orientation= Orientation.Horizontal,
                TickFrequency=10,
                TickPlacement= System.Windows.Controls.Primitives.TickPlacement.Both,
                IsSelectionRangeEnabled=true,
                SelectionEnd=90,
                SelectionStart=10
            };
            slider.ValueChanged += OnValueChanged;

            TextBlock textBlock = new TextBlock();
            StackPanel stackPanel = new StackPanel();
            stackPanel.Background = Brushes.LightSkyBlue;
            stackPanel.Children.Add(slider);
            stackPanel.Children.Add(textBlock);
            this.Content = stackPanel;
        }

        //不适用绑定,是为了展示事件
        private void OnValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            foreach (var item in ((sender as Slider).Parent as StackPanel).Children)
            {
                if (item is TextBlock) (item as TextBlock).Text = (sender as Slider).Value.ToString();
            }           
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值