本文主要是介绍WPF ScrollViewer 仿苹果 细长 滚动条,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有时候需要比较细长的滚动条, 也不用管实不实用 好看就是了
github:https://github.com/442040292/ScrollViewStyleDemo
下载:https://download.csdn.net/download/sinat_30224769/16296651
直接上 Style
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:sys="clr-namespace:System;assembly=mscorlib"><sys:Double x:Key="scrollRadio">5</sys:Double><sys:Double x:Key="scrollSize">10</sys:Double><ControlTemplate x:Key="ScrollViewerControlTemplateSlender" TargetType="{x:Type ScrollViewer}"><Grid x:Name="Grid" Background="{TemplateBinding Background}"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions><!--角落块--><!--<Rectangle x:Name="Corner" Grid.Column="1" Fill="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" Grid.Row="1"/>--><ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0"/><ScrollBar x:Name="PART_VerticalScrollBar" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Grid.Row="0" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}" Style="{DynamicResource ScrollBarStyleSlender}"/><ScrollBar x:Name="PART_HorizontalScrollBar" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow" Grid.Column="0" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}" Style="{DynamicResource ScrollBarStyleSlender}"/></Grid></ControlTemplate><SolidColorBrush x:Key="ScrollBar.Static.Background" Color="#F0F0F0"/><SolidColorBrush x:Key="ScrollBar.Static.Border" Color="#F0F0F0"/><SolidColorBrush x:Key="ScrollBar.Pressed.Glyph" Color="#FFFFFF"/><SolidColorBrush x:Key="ScrollBar.MouseOver.Glyph" Color="#000000"/><SolidColorBrush x:Key="ScrollBar.Disabled.Glyph" Color="#BFBFBF"/><SolidColorBrush x:Key="ScrollBar.Static.Glyph" Color="#606060"/><Style x:Key="FocusVisual"><Setter Property="Control.Template"><Setter.Value><ControlTemplate><Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/></ControlTemplate></Setter.Value></Setter></Style><SolidColorBrush x:Key="ScrollBar.MouseOver.Background" Color="#DADADA"/><SolidColorBrush x:Key="ScrollBar.MouseOver.Border" Color="#DADADA"/><SolidColorBrush x:Key="ScrollBar.Pressed.Background" Color="#606060"/><SolidColorBrush x:Key="ScrollBar.Pressed.Border" Color="#606060"/><SolidColorBrush x:Key="ScrollBar.Disabled.Background" Color="#F0F0F0"/><SolidColorBrush x:Key="ScrollBar.Disabled.Border" Color="#F0F0F0"/><Style x:Key="ScrollBarButton" TargetType="{x:Type RepeatButton}"><Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/><Setter Property="BorderThickness" Value="1"/><Setter Property="HorizontalContentAlignment" Value="Center"/><Setter Property="VerticalContentAlignment" Value="Center"/><Setter Property="Padding" Value="1"/><Setter Property="Focusable" Value="false"/><Setter Property="IsTabStop" Value="false"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type RepeatButton}"><Border x:Name="border" BorderBrush="{StaticResource ScrollBar.Static.Border}" BorderThickness="1" Background="{StaticResource ScrollBar.Static.Background}" SnapsToDevicePixels="true"><ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="true"><Setter Property="Background" TargetName="border" Value="{StaticResource ScrollBar.MouseOver.Background}"/><Setter Property="BorderBrush" TargetName="border" Value="{StaticResource ScrollBar.MouseOver.Border}"/></Trigger><Trigger Property="IsPressed" Value="true"><Setter Property="Background" TargetName="border" Value="{StaticResource ScrollBar.Pressed.Background}"/><Setter Property="BorderBrush" TargetName="border" Value="{StaticResource ScrollBar.Pressed.Border}"/></Trigger><Trigger Property="IsEnabled" Value="false"><Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/><Setter Property="Background" TargetName="border" Value="{StaticResource ScrollBar.Disabled.Background}"/><Setter Property="BorderBrush" TargetName="border" Value="{StaticResource ScrollBar.Disabled.Border}"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style><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"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type RepeatButton}"><Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}"/></ControlTemplate></Setter.Value></Setter></Style><SolidColorBrush x:Key="ScrollBar.MouseOver.Thumb" Color="#A6A6A6"/><SolidColorBrush x:Key="ScrollBar.Pressed.Thumb" Color="#606060"/><SolidColorBrush x:Key="ScrollBar.Static.Thumb" Color="#CDCDCD"/><Style x:Key="ScrollBarThumbVertical" TargetType="{x:Type Thumb}"><Setter Property="OverridesDefaultStyle" Value="true"/><Setter Property="IsTabStop" Value="false"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Thumb}"><Rectangle x:Name="rectangle" RadiusX="{StaticResource scrollRadio}" RadiusY="{StaticResource scrollRadio}" Fill="{StaticResource ScrollBar.Static.Thumb}" Height="{TemplateBinding Height}" SnapsToDevicePixels="True" Width="{TemplateBinding Width}"/><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="true"><Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ScrollBar.MouseOver.Thumb}"/></Trigger><Trigger Property="IsDragging" Value="true"><Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ScrollBar.Pressed.Thumb}"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style><Style x:Key="ScrollBarThumbHorizontal" TargetType="{x:Type Thumb}"><Setter Property="OverridesDefaultStyle" Value="true"/><Setter Property="IsTabStop" Value="false"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Thumb}"><Rectangle x:Name="rectangle" RadiusX="{StaticResource scrollRadio}" RadiusY="{StaticResource scrollRadio}" Fill="{StaticResource ScrollBar.Static.Thumb}" Height="{TemplateBinding Height}" SnapsToDevicePixels="True" Width="{TemplateBinding Width}"/><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="true"><Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ScrollBar.MouseOver.Thumb}"/></Trigger><Trigger Property="IsDragging" Value="true"><Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ScrollBar.Pressed.Thumb}"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style><Style x:Key="ScrollBarStyleSlender" TargetType="{x:Type ScrollBar}"><Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/><Setter Property="Stylus.IsFlicksEnabled" Value="false"/><Setter Property="Background" Value="{StaticResource ScrollBar.Static.Background}"/><Setter Property="BorderBrush" Value="{StaticResource ScrollBar.Static.Border}"/><Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/><Setter Property="BorderThickness" Value="1,0"/><Setter Property="Width" Value="{StaticResource scrollSize}"/><Setter Property="MinWidth" Value="{StaticResource scrollSize}"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type ScrollBar}"><Grid x:Name="Bg" SnapsToDevicePixels="true"><Grid.RowDefinitions><RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/><RowDefinition Height="0.00001*"/><RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/></Grid.RowDefinitions><!--<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Row="1"/>--><!--滚动条背景--><Rectangle RadiusX="{StaticResource scrollRadio}" RadiusY="{StaticResource scrollRadio}" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}" Fill="{TemplateBinding Background}" Grid.Row="1"/><Track x:Name="PART_Track" IsDirectionReversed="true" IsEnabled="{TemplateBinding IsMouseOver}" Grid.Row="1"><Track.DecreaseRepeatButton><RepeatButton Command="{x:Static ScrollBar.PageUpCommand}" Style="{StaticResource RepeatButtonTransparent}"/></Track.DecreaseRepeatButton><Track.IncreaseRepeatButton><RepeatButton Command="{x:Static ScrollBar.PageDownCommand}" Style="{StaticResource RepeatButtonTransparent}"/></Track.IncreaseRepeatButton><Track.Thumb><!--滚动条滑块--><Thumb Style="{StaticResource ScrollBarThumbVertical}"/></Track.Thumb></Track></Grid></ControlTemplate></Setter.Value></Setter><Style.Triggers><Trigger Property="Orientation" Value="Horizontal"><Setter Property="Width" Value="Auto"/><Setter Property="MinWidth" Value="0"/><Setter Property="Height" Value="{StaticResource scrollSize}"/><Setter Property="MinHeight" Value="{StaticResource scrollSize}"/><Setter Property="BorderThickness" Value="0,1"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type ScrollBar}"><Grid x:Name="Bg" SnapsToDevicePixels="true"><Grid.ColumnDefinitions><ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}"/><ColumnDefinition Width="0.00001*"/><ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}"/></Grid.ColumnDefinitions><!--<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="1"/>--><!--滚动条背景--><Rectangle RadiusX="{StaticResource scrollRadio}" RadiusY="{StaticResource scrollRadio}" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}" Fill="{TemplateBinding Background}" Grid.Column="1"/><Track x:Name="PART_Track" Grid.Column="1" IsEnabled="{TemplateBinding IsMouseOver}"><Track.DecreaseRepeatButton><RepeatButton Command="{x:Static ScrollBar.PageLeftCommand}" Style="{StaticResource RepeatButtonTransparent}"/></Track.DecreaseRepeatButton><Track.IncreaseRepeatButton><RepeatButton Command="{x:Static ScrollBar.PageRightCommand}" Style="{StaticResource RepeatButtonTransparent}"/></Track.IncreaseRepeatButton><Track.Thumb><!--滚动条滑块--><Thumb Style="{StaticResource ScrollBarThumbHorizontal}"/></Track.Thumb></Track></Grid></ControlTemplate></Setter.Value></Setter></Trigger></Style.Triggers></Style></ResourceDictionary>
实际上没改很多内容 直接用原模版改了一下
难点是要看懂,每个元素代表的是什么,了解了组成就很容易改了
修改模板的方式
1.
2.
这篇关于WPF ScrollViewer 仿苹果 细长 滚动条的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!