风の社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 6338|回复: 1
打印 上一主题 下一主题

[WPF] ScrollViewer自定义滚动条样式

[复制链接]

449

主题

0

听众

1995

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    开心
    2012-9-12 10:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    楼主
    发表于 2013-3-5 19:54:07 |只看该作者 |倒序浏览
    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    转播转播0 分享分享0 收藏收藏0 支持支持0 反对反对0
    回复

    使用道具 举报

    449

    主题

    0

    听众

    1995

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    开心
    2012-9-12 10:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    沙发
    发表于 2013-3-5 20:20:37 |只看该作者
    我也来发一个自己做的滚动条样式吧:

    <ResourceDictionary
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
    	<SolidColorBrush x:Key="NormalBrush" Color="#BDD4DE" />
    	<SolidColorBrush x:Key="GlyphBrush" Color="White" />
    
    	<Style x:Key="ScrollBarLineButton" TargetType="{x:Type RepeatButton}">
    		<Setter Property="OverridesDefaultStyle" Value="True" />
    		<Setter Property="SnapsToDevicePixels" Value="True" />
    		<Setter Property="Focusable" Value="False" />
    		<Setter Property="Template">
    			<Setter.Value>
    				<ControlTemplate TargetType="{x:Type RepeatButton}">
    					<Border Name="Border" Background="{StaticResource NormalBrush}">
    						<Path HorizontalAlignment="Center"
    							  VerticalAlignment="Center"
    							  Fill="{StaticResource GlyphBrush}"
    							  Data="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}" />
    					</Border>
    					<ControlTemplate.Triggers>
    						<Trigger Property="IsEnabled" Value="False">
    							<Setter Property="Foreground" Value="{StaticResource GlyphBrush}" />
    						</Trigger>
    					</ControlTemplate.Triggers>
    				</ControlTemplate>
    			</Setter.Value>
    		</Setter>
    	</Style>
    
    	<Style x:Key="ScrollBarPageButton" TargetType="{x:Type RepeatButton}">
    		<Setter Property="OverridesDefaultStyle" Value="True" />
    		<Setter Property="SnapsToDevicePixels" Value="True" />
    		<Setter Property="IsTabStop" Value="False" />
    		<Setter Property="Focusable" Value="False" />
    		<Setter Property="Template">
    			<Setter.Value>
    				<ControlTemplate TargetType="{x:Type RepeatButton}">
    					<Border Background="Transparent" />
    				</ControlTemplate>
    			</Setter.Value>
    		</Setter>
    	</Style>
    
    	<Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">
    		<Setter Property="OverridesDefaultStyle" Value="True" />
    		<Setter Property="SnapsToDevicePixels" Value="True" />
    		<Setter Property="IsTabStop" Value="False" />
    		<Setter Property="Focusable" Value="False" />
    		<Setter Property="Template">
    			<Setter.Value>
    				<ControlTemplate TargetType="{x:Type Thumb}">
    					<Border Background="{TemplateBinding Background}" />
    				</ControlTemplate>
    			</Setter.Value>
    		</Setter>
    	</Style>
    
    	<ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}">
    		<Grid>
    			<Grid.RowDefinitions>
    				<RowDefinition MaxHeight="16" />
    				<RowDefinition />
    				<RowDefinition MaxHeight="16" />
    			</Grid.RowDefinitions>
    			<RepeatButton Grid.Row="0"
    						  Style="{StaticResource ScrollBarLineButton}"
    						  Height="16"
    						  Margin="0,1"
    						  Command="ScrollBar.LineUpCommand"
    						  Content="M 0 4 L 8 4 L 4 0 Z" />
    			<Grid Grid.Row="1" Background="#EEF3F6">
    				<Track Name="PART_Track" IsDirectionReversed="True">
    					<Track.DecreaseRepeatButton>
    						<RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageUpCommand" />
    					</Track.DecreaseRepeatButton>
    					<Track.Thumb>
    						<Thumb Style="{StaticResource ScrollBarThumb}" Background="{StaticResource NormalBrush}" />
    					</Track.Thumb>
    					<Track.IncreaseRepeatButton>
    						<RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageDownCommand" />
    					</Track.IncreaseRepeatButton>
    				</Track>
    			</Grid>
    			<RepeatButton Grid.Row="2"
    						  Style="{StaticResource ScrollBarLineButton}"
    						  Height="16"
    						  Margin="0,1"
    						  Command="ScrollBar.LineDownCommand"
    						  Content="M 0 0 L 4 4 L 8 0 Z" />
    		</Grid>
    	</ControlTemplate>
    
    	<ControlTemplate x:Key="HorizontalScrollBar" TargetType="{x:Type ScrollBar}">
    		<Grid>
    			<Grid.ColumnDefinitions>
    				<ColumnDefinition MaxWidth="16" />
    				<ColumnDefinition />
    				<ColumnDefinition MaxWidth="16" />
    			</Grid.ColumnDefinitions>
    			<RepeatButton Grid.Column="0"
    						  Style="{StaticResource ScrollBarLineButton}"
    						  Width="16"
    						  Margin="1,0"
    						  Command="ScrollBar.LineLeftCommand"
    						  Content="M 4 0 L 4 8 L 0 4 Z" />
    			<Grid Grid.Column="1" Background="#EEF3F6">
    				<Track Name="PART_Track" IsDirectionReversed="False">
    					<Track.DecreaseRepeatButton>
    						<RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageLeftCommand" />
    					</Track.DecreaseRepeatButton>
    					<Track.Thumb>
    						<Thumb Style="{StaticResource ScrollBarThumb}" Background="{StaticResource NormalBrush}" />
    					</Track.Thumb>
    					<Track.IncreaseRepeatButton>
    						<RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageRightCommand" />
    					</Track.IncreaseRepeatButton>
    				</Track>
    			</Grid>
    			<RepeatButton Grid.Column="2"
    						  Style="{StaticResource ScrollBarLineButton}"
    						  Width="16"
    						  Margin="1,0"
    						  Command="ScrollBar.LineRightCommand"
    						  Content="M 0 0 L 4 4 L 0 8 Z" />
    		</Grid>
    	</ControlTemplate>
    	
    	<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
    		<Setter Property="OverridesDefaultStyle" Value="True" />
    		<Setter Property="SnapsToDevicePixels" Value="True" />
    		<Style.Triggers>
    			<Trigger Property="Orientation" Value="Vertical">
    				<Setter Property="Width" Value="16" />
    				<Setter Property="Height" Value="Auto" />
    				<Setter Property="Template" Value="{StaticResource VerticalScrollBar}" />
    			</Trigger>
    			<Trigger Property="Orientation" Value="Horizontal">
    				<Setter Property="Width" Value="Auto" />
    				<Setter Property="Height" Value="16" />
    				<Setter Property="Template" Value="{StaticResource HorizontalScrollBar}" />
    			</Trigger>
    		</Style.Triggers>
    	</Style>
    
    	<Style x:Key="ScrollViewer" TargetType="{x:Type ScrollViewer}">
    		<Setter Property="OverridesDefaultStyle" Value="True" />
    		<Setter Property="Template">
    			<Setter.Value>
    				<ControlTemplate TargetType="{x:Type ScrollViewer}">
    					<Grid>
    						<Grid.ColumnDefinitions>
    							<ColumnDefinition />
    							<ColumnDefinition Width="Auto" />
    						</Grid.ColumnDefinitions>
    						<Grid.RowDefinitions>
    							<RowDefinition />
    							<RowDefinition Height="Auto" />
    						</Grid.RowDefinitions>
    						<ScrollContentPresenter Margin="1" />
    						<ScrollBar Name="PART_VerticalScrollBar"
    								   Grid.Column="1"
    								   Margin="0,0,1,0"
    								   Value="{TemplateBinding VerticalOffset}"
    								   Maximum="{TemplateBinding ScrollableHeight}"
    								   ViewportSize="{TemplateBinding ViewportHeight}"
    								   Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
    						<ScrollBar Name="PART_HorizontalScrollBar"
    								   Orientation="Horizontal"
    								   Grid.Row="1"
    								   Grid.Column="0"
    								   Margin="0,0,0,1"
    								   Value="{TemplateBinding HorizontalOffset}"
    								   Maximum="{TemplateBinding ScrollableWidth}"
    								   ViewportSize="{TemplateBinding ViewportWidth}"
    								   Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
    					</Grid>
    				</ControlTemplate>
    			</Setter.Value>
    		</Setter>
    	</Style>
    </ResourceDictionary>

    使用方法:引用资源后,把ScrollViewer的Style属性设置为Style="{StaticResource ScrollViewer}"

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    Archiver|手机版|迦南的天空 ( 沪ICP备12037486号-1

    GMT+8, 2024-5-18 21:28 , Processed in 0.017494 second(s), 9 queries , Gzip On, Redis On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回顶部