亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

WPF Slider滑動條的顏色修改方法

2019-10-29 21:01:23
字體:
來源:轉載
供稿:網友

效果如下:

WPF,Slider,滑動條

鄙人雖然開發WPF有些時間,但之前一直是一些簡單Template和Style改改之類的工作,并沒有深入研究過。此次為了完成工作,首先也是網上搜了半天,沒有找到合適的代碼直接拷貝(搜索能力待提高),干脆就直接靜下心來琢磨琢磨。

一開始在界面上就放了Slider,撓撓頭,怎么修改Template才能達到效果呢?后來想到了Blend,之前一直聽說很強大的界面設計工具,但是一直沒有用過,就趁此機會就簡單運用了一下。Blend中很牛逼的就是編輯模板,通過創建模板副本,可以看到Slider結構

WPF,Slider,滑動條

WPF,Slider,滑動條

結合代碼發現,Thumb左右兩邊的ReapeatButton的寬度會隨著Thumb的位置會變化。那問題就變得簡單很多,修改左RepeatButton的Template就可以達到目的,核心代碼如下。

    <Style x:Key="DecreaseBtn" TargetType="{x:Type RepeatButton}">      <Setter Property="Template">        <Setter.Value>          <ControlTemplate TargetType="{x:Type RepeatButton}">            <Border Background="{TemplateBinding Background}"                 Height="{TemplateBinding Height}" Width="{TemplateBinding Width}">              <!--軌跡,設置Background-->              <Border Margin="0,0,-1,0" Background="{StaticResource SliderThumb.Track.DecreaseBackground}"                   VerticalAlignment="center" Height="4.0" />            </Border>          </ControlTemplate>        </Setter.Value>      </Setter>    </Style>

完整代碼(只是考慮水平的Slider):

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">  <SolidColorBrush x:Key="SliderThumb.Static.Foreground" Color="#FFE5E5E5"/>  <SolidColorBrush x:Key="SliderThumb.MouseOver.Background" Color="Gray"/>  <SolidColorBrush x:Key="SliderThumb.MouseOver.Border" Color="#FF7Eb4EA"/>  <SolidColorBrush x:Key="SliderThumb.Pressed.Background" Color="Gray"/>  <SolidColorBrush x:Key="SliderThumb.Pressed.Border" Color="Gray"/>  <SolidColorBrush x:Key="SliderThumb.Disabled.Background" Color="#FFF0F0F0"/>  <SolidColorBrush x:Key="SliderThumb.Disabled.Border" Color="#FFD9D9D9"/>  <SolidColorBrush x:Key="SliderThumb.Static.Background" Color="#989898"/>  <ControlTemplate x:Key="SliderThumbHorizontalTop" TargetType="{x:Type Thumb}">    <Grid HorizontalAlignment="Center" UseLayoutRounding="True" VerticalAlignment="Center">      <Path x:Name="grip" Data="M 0,6 C0,6 5.5,0 5.5,0 5.5,0 11,6 11,6 11,6 11,18 11,18 11,18 0,18 0,18 0,18 0,6 0,6 z"          Fill="{StaticResource SliderThumb.Static.Background}"          Stretch="Fill" SnapsToDevicePixels="True"          Stroke="{Binding Path=Fill, RelativeSource={x:Static RelativeSource.Self}}" StrokeThickness="1" UseLayoutRounding="True" VerticalAlignment="Center"/>    </Grid>    <ControlTemplate.Triggers>      <Trigger Property="IsMouseOver" Value="true">        <Setter Property="Fill" TargetName="grip" Value="{StaticResource SliderThumb.MouseOver.Background}"/>        <Setter Property="Stroke" TargetName="grip" Value="{StaticResource SliderThumb.MouseOver.Border}"/>      </Trigger>      <Trigger Property="IsDragging" Value="true">        <Setter Property="Fill" TargetName="grip" Value="{StaticResource SliderThumb.Pressed.Background}"/>        <Setter Property="Stroke" TargetName="grip" Value="{StaticResource SliderThumb.Pressed.Border}"/>      </Trigger>      <Trigger Property="IsEnabled" Value="false">        <Setter Property="Fill" TargetName="grip" Value="{StaticResource SliderThumb.Disabled.Background}"/>        <Setter Property="Stroke" TargetName="grip" Value="{StaticResource SliderThumb.Disabled.Border}"/>      </Trigger>    </ControlTemplate.Triggers>  </ControlTemplate>  <ControlTemplate x:Key="SliderThumbHorizontalBottom" TargetType="{x:Type Thumb}">    <Grid HorizontalAlignment="Center" UseLayoutRounding="True" VerticalAlignment="Center">      <Path x:Name="grip" Data="M 0,12 C0,12 5.5,18 5.5,18 5.5,18 11,12 11,12 11,12 11,0 11,0 11,0 0,0 0,0 0,0 0,12 0,12 z"          Fill="{StaticResource SliderThumb.Static.Background}"         Stretch="Fill"          SnapsToDevicePixels="True"          Stroke="{Binding Path=Fill, RelativeSource={x:Static RelativeSource.Self}}" StrokeThickness="1" UseLayoutRounding="True" VerticalAlignment="Center"/>    </Grid>    <ControlTemplate.Triggers>      <Trigger Property="IsMouseOver" Value="true">        <Setter Property="Fill" TargetName="grip" Value="{StaticResource SliderThumb.MouseOver.Background}"/>        <Setter Property="Stroke" TargetName="grip" Value="{StaticResource SliderThumb.MouseOver.Border}"/>      </Trigger>      <Trigger Property="IsDragging" Value="true">        <Setter Property="Fill" TargetName="grip" Value="{StaticResource SliderThumb.Pressed.Background}"/>        <Setter Property="Stroke" TargetName="grip" Value="{StaticResource SliderThumb.Pressed.Border}"/>      </Trigger>      <Trigger Property="IsEnabled" Value="false">        <Setter Property="Fill" TargetName="grip" Value="{StaticResource SliderThumb.Disabled.Background}"/>        <Setter Property="Stroke" TargetName="grip" Value="{StaticResource SliderThumb.Disabled.Border}"/>      </Trigger>    </ControlTemplate.Triggers>  </ControlTemplate>  <SolidColorBrush x:Key="SliderThumb.Track.Background" Color="#b6b6b6"/>  <SolidColorBrush x:Key="SliderThumb.Track.DecreaseBackground" Color="#45db5e"/>  <Style x:Key="RepeatButtonTransparent" TargetType="{x:Type RepeatButton}">    <Setter Property="OverridesDefaultStyle" Value="true"/>    <Setter Property="Background" Value="Transparent"/>    <Setter Property="Focusable" Value="false"/>    <Setter Property="IsTabStop" Value="false"/>  </Style>  <Style x:Key="DecreaseBtn" TargetType="{x:Type RepeatButton}" BasedOn="{StaticResource RepeatButtonTransparent}">    <Setter Property="Template">      <Setter.Value>        <ControlTemplate TargetType="{x:Type RepeatButton}">          <Border Background="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}">            <Border Margin="1,0,-1,0" Background="{StaticResource SliderThumb.Track.DecreaseBackground}"                 VerticalAlignment="center" Height="4.0" />          </Border>        </ControlTemplate>      </Setter.Value>    </Setter>  </Style>  <Style x:Key="IncreaseBtn" TargetType="{x:Type RepeatButton}" BasedOn="{StaticResource RepeatButtonTransparent}">    <Setter Property="Template">      <Setter.Value>        <ControlTemplate TargetType="{x:Type RepeatButton}">          <Border Background="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}"/>        </ControlTemplate>      </Setter.Value>    </Setter>  </Style>  <ControlTemplate x:Key="SliderThumbHorizontalDefault" TargetType="{x:Type Thumb}">    <Grid HorizontalAlignment="Center" UseLayoutRounding="True" VerticalAlignment="Center">      <Path x:Name="grip" Data="M0 512C0 229.230208 229.805588 0 512 0 794.769792 0 1024 229.805588 1024 512 1024 794.769792 794.194412 1024 512 1024 229.230208 1024 0 794.194412 0 512Z"            StrokeThickness="1" Fill="{StaticResource SliderThumb.Static.Background}" Stroke="{Binding Path=Fill, RelativeSource={x:Static RelativeSource.Self}}"           Width="18" Height="{Binding Path=Width, RelativeSource={x:Static RelativeSource.Self}}"           Stretch="Fill" SnapsToDevicePixels="True" UseLayoutRounding="True" VerticalAlignment="Center"/>    </Grid>    <ControlTemplate.Triggers>      <Trigger Property="IsMouseOver" Value="true">        <Setter Property="Fill" TargetName="grip" Value="{StaticResource SliderThumb.MouseOver.Background}"/>      </Trigger>      <Trigger Property="IsDragging" Value="true">        <Setter Property="Fill" TargetName="grip" Value="{StaticResource SliderThumb.Pressed.Background}"/>        <Setter Property="Stroke" TargetName="grip" Value="{StaticResource SliderThumb.Pressed.Border}"/>      </Trigger>      <Trigger Property="IsEnabled" Value="false">        <Setter Property="Fill" TargetName="grip" Value="{StaticResource SliderThumb.Disabled.Background}"/>        <Setter Property="Stroke" TargetName="grip" Value="{StaticResource SliderThumb.Disabled.Border}"/>      </Trigger>    </ControlTemplate.Triggers>  </ControlTemplate>  <ControlTemplate x:Key="SliderHorizontal" TargetType="{x:Type Slider}">    <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}"           BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">      <Grid>        <Grid.RowDefinitions>          <RowDefinition Height="15"/>          <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}"/>          <RowDefinition Height="15"/>        </Grid.RowDefinitions>        <TickBar x:Name="TopTick" Fill="{TemplateBinding Foreground}" Height="4" Margin="0,0,0,2" Placement="Top" Grid.Row="0"                Visibility="Collapsed"/>        <TickBar x:Name="BottomTick" Fill="{TemplateBinding Foreground}" Height="4" Margin="0,2,0,0" Placement="Bottom" Grid.Row="2"                Visibility="Collapsed"/>        <Border x:Name="TrackBackground" BorderBrush="{StaticResource SliderThumb.Track.Background}"             BorderThickness="1" Background="{Binding Path=BorderBrush, RelativeSource={x:Static RelativeSource.Self}}"             Height="4.0" Margin="5,0" Grid.Row="1" VerticalAlignment="center">          <Canvas HorizontalAlignment="Stretch" Margin="0,-1">            <Rectangle x:Name="PART_SelectionRange" Fill="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"                  Height="{Binding Path=Height, ElementName=TrackBackground}" Visibility="Hidden"/>          </Canvas>        </Border>        <Track x:Name="PART_Track" Grid.Row="1">          <Track.DecreaseRepeatButton>            <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource DecreaseBtn}"/>          </Track.DecreaseRepeatButton>          <Track.IncreaseRepeatButton>            <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource IncreaseBtn}"/>          </Track.IncreaseRepeatButton>          <Track.Thumb>            <Thumb x:Name="Thumb" Focusable="False" Height="20" OverridesDefaultStyle="True"                 Template="{StaticResource SliderThumbHorizontalDefault}" VerticalAlignment="Center"                 Width="{Binding Path=Height, RelativeSource={x:Static RelativeSource.Self}}"/>          </Track.Thumb>        </Track>      </Grid>    </Border>    <ControlTemplate.Triggers>      <Trigger Property="TickPlacement" Value="TopLeft">        <Setter Property="Visibility" TargetName="TopTick" Value="Visible"/>        <Setter Property="Template" TargetName="Thumb" Value="{StaticResource SliderThumbHorizontalTop}"/>        <Setter Property="Margin" TargetName="TrackBackground" Value="5,2,5,0"/>      </Trigger>      <Trigger Property="TickPlacement" Value="BottomRight">        <Setter Property="Visibility" TargetName="BottomTick" Value="Visible"/>        <Setter Property="Template" TargetName="Thumb" Value="{StaticResource SliderThumbHorizontalBottom}"/>        <Setter Property="Margin" TargetName="TrackBackground" Value="5,0,5,2"/>      </Trigger>      <Trigger Property="TickPlacement" Value="Both">        <Setter Property="Visibility" TargetName="TopTick" Value="Visible"/>        <Setter Property="Visibility" TargetName="BottomTick" Value="Visible"/>      </Trigger>      <Trigger Property="IsSelectionRangeEnabled" Value="true">        <Setter Property="Visibility" TargetName="PART_SelectionRange" Value="Visible"/>      </Trigger>    </ControlTemplate.Triggers>  </ControlTemplate>  <Style x:Key="SliderStyle" TargetType="{x:Type Slider}">    <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/>    <Setter Property="Background" Value="Transparent"/>    <Setter Property="BorderBrush" Value="Transparent"/>    <Setter Property="Template" Value="{StaticResource SliderHorizontal}"/>  </Style></ResourceDictionary>

其實最重要的還是控件的結構,只要對此很熟悉,做出理想的控件應該不難。

總結

以上所述是小編給大家介紹的WPF Slider滑動條的顏色修改方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美电影免费观看高清| 亚洲第五色综合网| 国产欧美一区二区三区四区| 久热精品在线视频| 成人国产精品免费视频| 日韩av免费在线| 成人在线国产精品| 91在线免费观看网站| 在线观看国产成人av片| 亚洲欧美国产精品专区久久| 久久人91精品久久久久久不卡| 欧美日韩国产麻豆| 欧美日本在线视频中文字字幕| 欧美体内谢she精2性欧美| 大胆人体色综合| 欧美激情va永久在线播放| 国产精品极品美女在线观看免费| 日本一区二三区好的精华液| 久久综合88中文色鬼| 日韩视频免费中文字幕| 亚洲人成电影网站色www| 久久视频中文字幕| 久久久噜久噜久久综合| 亚洲综合色av| 欧美成人午夜激情| 日韩中文字幕在线免费观看| 国产日本欧美在线观看| 日韩精品一区二区三区第95| 亚洲xxx自由成熟| 欧美专区在线观看| 浅井舞香一区二区| 亚洲国产精品人久久电影| 久久久久久国产| 国产午夜精品视频免费不卡69堂| 91精品在线国产| 成人淫片在线看| 97久久久久久| 国产精品久久久久久久7电影| 中文国产成人精品久久一| 日韩电视剧免费观看网站| 91在线观看免费网站| 国产精品扒开腿做爽爽爽男男| 欧美贵妇videos办公室| 欧美成年人网站| 色先锋资源久久综合5566| 日韩av有码在线| 中文字幕av一区二区| 亚洲国产精品成人一区二区| 91免费人成网站在线观看18| 成人黄色激情网| 一本色道久久88精品综合| 欧美壮男野外gaytube| 国产福利视频一区二区| 日本一区二区在线播放| 久久精品国产亚洲| 亚洲美女又黄又爽在线观看| 欧美一区二区三区免费观看| 欧美日韩成人黄色| 两个人的视频www国产精品| 色噜噜狠狠狠综合曰曰曰88av| 97成人精品视频在线观看| 国产午夜精品理论片a级探花| 亚洲国产精品大全| 日本成熟性欧美| 91福利视频在线观看| 欧美特黄级在线| 日韩久久免费电影| 亚洲影视九九影院在线观看| 亚洲成人av中文字幕| 欧美午夜女人视频在线| 欧美www视频在线观看| 久久久久久久久电影| 欧美午夜性色大片在线观看| 国产精品黄色影片导航在线观看| 日韩精品在线免费| 亚洲激情免费观看| 亚洲精品大尺度| 欧美老女人性生活| 91欧美精品午夜性色福利在线| 亚洲精品资源在线| 国产免费一区二区三区香蕉精| 亚洲电影成人av99爱色| 欧日韩不卡在线视频| 亚洲一区二区三区xxx视频| 国产精品一区二区三区久久久| 国产精品一二三视频| 久久久久www| 欧美成人h版在线观看| 成人激情在线观看| 久久国产精品影片| 国产精品直播网红| 亚洲在线第一页| 538国产精品一区二区在线| 日韩在线视频中文字幕| 日韩有码在线视频| 92看片淫黄大片看国产片| 国产小视频91| 亚洲国产一区二区三区四区| 热久久免费国产视频| 久久精品电影网| 性色av一区二区咪爱| 亚洲欧美日韩国产成人| 国产精品久久久久久av福利| 国产精品美女www爽爽爽视频| 欧美理论电影在线观看| 亚洲精品视频在线观看视频| 亚洲欧洲在线观看| 国产精品一区二区电影| 亚洲毛片在线观看| 亚洲人成网在线播放| 亚洲欧美一区二区三区四区| 久久亚洲综合国产精品99麻豆精品福利| 亚洲已满18点击进入在线看片| 亚洲国内高清视频| 国产亚洲欧洲在线| 不卡av电影院| 亚洲精品黄网在线观看| 伊是香蕉大人久久| 国产精品白丝jk喷水视频一区| 国内精品国产三级国产在线专| 欧美日韩国产色视频| 九九九久久国产免费| 91在线观看免费网站| 九九久久久久久久久激情| 亚洲男人天堂网站| 欧美特黄级在线| 色综合久久88| 久久精品人人爽| 国产ts人妖一区二区三区| 亚洲第一页自拍| 亚洲a区在线视频| 亚洲人成电影网站色xx| 色综合天天狠天天透天天伊人| 久久久视频免费观看| 亚洲精品视频网上网址在线观看| 亚洲最大成人在线| 久久久女人电视剧免费播放下载| 亚洲一级片在线看| 日韩欧美在线网址| 日本精品久久久久影院| 97人人模人人爽人人喊中文字| 精品久久中文字幕久久av| 欧美电影免费观看| 亚洲在线观看视频| 国产精品一区久久久| 亚洲欧美综合v| 亚洲精品在线视频| 国产成人涩涩涩视频在线观看| 久久91超碰青草是什么| 91成人免费观看网站| 亚洲已满18点击进入在线看片| 国产精品一区二区久久精品| 丝袜一区二区三区| 久久久久亚洲精品成人网小说| 日韩精品有码在线观看| 91九色国产视频| 久久久久久久久久久久久久久久久久av| 一区二区亚洲欧洲国产日韩| 亚洲国产97在线精品一区| 黄色91在线观看| 国产精品白嫩初高中害羞小美女| 国产精品爱久久久久久久| 欧美日韩亚洲精品内裤| 色黄久久久久久|