自定义Slider控件最终效果:界面:<Windowxmlns="/winfx/2006/xaml/presentati on"xmlns:x="/winfx/2006/xaml" xmlns:d="/expression/blend/2008" xmlns:mc="/markup-compatibility/2006" mc:Ignorable="d"x:Class="dcsq_client_wpf.window.ControlPanelWin"Title="自定义Slider控件" Height="303" Width="424" ResizeMode="NoResize"WindowStyle="None" WindowStartupLocation="Manual"Background="{x:Null}" AllowsTransparency="True" ShowInTaskbar="False"><Window.Resources><!--Slider样式1:隐藏掉左右--><Style TargetType="{x:Type RepeatButton}"><Setter Property="Template"><Setter.Value><ControlTemplate><Rectangle Fill="Transparent"Focusable="False"/></ControlTemplate></Setter.Value></Setter></Style><!--Slider样式2:设置Thumb的样式-中间滑块的部分用方块图片替代--><Style TargetType="{x:Type Thumb}"><Setter Property="Template"><Setter.Value><ControlTemplate><Label Name="lblSliderText"Focusable="False" Width="34" Height="29"VerticalContentAlignment="Center"HorizontalContentAlignment="Center" Foreground="#FFFFFF" FontFamily="微软雅黑" FontSize="14"><Label.Background><ImageBrushImageSource="/dcsq_client_wpf;component/image/slider_thumb.png "/></Label.Background></Label></ControlTemplate></Setter.Value></Setter></Style><!--Slier右侧-背景用1px的图片做背景平铺--><Style x:Key="SliderIncreaseRepeatButtonStyle" TargetType="{x:Type RepeatButton}"><Setter Property="Template"><Setter.Value><ControlTemplate><Grid Height="10" Focusable="False"><Border BorderThickness="1"Height="10" BorderBrush="Transparent" CornerRadius="0,5,5,0"><Border.Background><ImageBrushImageSource="/dcsq_client_wpf;component/image/slider_right.png " TileMode="Tile" Viewport="0,0,1,1"/></Border.Background></Border></Grid></ControlTemplate></Setter.Value></Setter></Style><!--Slider左侧-背景用1px的图片做背景平铺--><Style x:Key="SliderDecreaseRepeatButtonStyle" TargetType="{x:Type RepeatButton}"><Setter Property="Template"><Setter.Value><ControlTemplate><Grid Height="10" Focusable="False"><Border BorderThickness="1"Height="10" BorderBrush="Transparent" CornerRadius="5,0,0,5"><Border.Background><ImageBrushImageSource="/dcsq_client_wpf;component/image/slider_lef.png" TileMode="Tile" Viewport="0,0,1,1"/></Border.Background></Border><Grid.Effect><DropShadowEffectColor="#286030" ShadowDepth="1" BlurRadius="1"/></Grid.Effect></Grid></ControlTemplate></Setter.Value></Setter></Style><!--Slider整体样式应用--><Style TargetType="{x:Type Slider}"><Setter Property="Focusable" Value="False"/><Setter Property="Maximum" Value="100" /><Setter Property="Minimum" Value="0" /><Setter Property="Template"><Setter.Value><ControlTemplate><Grid Focusable="False"><Track x:Name="PART_Track"><Track.IncreaseRepeatButton><RepeatButtonCommand="{x:Static Slider.IncreaseLarge}"Style="{StaticResource SliderIncreaseRepeatButtonStyle}"></RepeatButton></Track.IncreaseRepeatButton><Track.DecreaseRepeatButton><RepeatButtonCommand="{x:Static Slider.DecreaseLarge}"Style="{StaticResource SliderDecreaseRepeatButtonStyle}"/></Track.DecreaseRepeatButton><Track.Thumb><Thumb /></Track.Thumb></Track></Grid></ControlTemplate></Setter.Value></Setter></Style></Window.Resources><Grid><Slider Focusable="False" Name="mySlider"Width="213" Height="30" Maximum="100" Minimum="0" Value="0" ValueChanged="mySlider_ValueChanged"IsSnapToTickEnabled="True" TickPlacement="Both"Loaded="mySlider_Loaded"/></Grid></Window>后台:///<summary>/// Slider的值显示控件///</summary>private Label sliderText;///<summary>///当slider的值更改时改变滑轮上的Label值///</summary>///<param name="sender"></param>///<param name="e"></param>private void mySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e){if (sliderText != null){sliderText.Content =this.mySlider.Value.ToString();}else{sliderText =GetChildObject<Label>(this.mySlider, "lblSliderText");}}///<summary>///获取滑轮上的Label方法///</summary>///<typeparam name="T"></typeparam>///<param name="obj"></param>///<param name="name"></param>///<returns></returns>public T GetChildObject<T>(DependencyObject obj, string name) where T : FrameworkElement{DependencyObject child = null;T grandChild = null;for (int i = 0; i <=VisualTreeHelper.GetChildrenCount(obj) - 1; i++){child = VisualTreeHelper.GetChild(obj, i);if (child is T && (((T)child).Name == name | string.IsNullOrEmpty(name))){return (T)child;}else{grandChild = GetChildObject<T>(child, name);if (grandChild != null)return grandChild;}}return null;}。