zoukankan      html  css  js  c++  java
  • WPF 全局样式(滚动条)

    对整个WPF项目进行样式修改时,采用全局样式的方法。

    首先,建一个xaml文件为存放样式的资源文件。写入想修改的控件样式,以滚动条样式为例。

      1 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      2                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      3                     xmlns:sys="clr-namespace:System;assembly=mscorlib">
      4     <!-- ScrollViewer 滚动条 -->
      5     <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">
      6         <Setter Property="OverridesDefaultStyle" Value="true"/>
      7         <Setter Property="IsTabStop" Value="false"/>
      8         <Setter Property="Template">
      9             <Setter.Value>
     10                 <ControlTemplate TargetType="{x:Type Thumb}">
     11                     <Grid>
     12                         <!--滚动条颜色-->
     13                         <Border Background="#646465" CornerRadius="3"/>
     14                     </Grid>
     15                 </ControlTemplate>
     16             </Setter.Value>
     17         </Setter>
     18     </Style>
     19     <Style x:Key="HorizontalScrollBarPageButton" TargetType="{x:Type RepeatButton}">
     20         <Setter Property="OverridesDefaultStyle" Value="true"/>
     21         <Setter Property="Background" Value="Transparent"/>
     22         <Setter Property="Focusable" Value="false"/>
     23         <Setter Property="IsTabStop" Value="false"/>
     24         <Setter Property="Opacity" Value="0.2"/>
     25         <Setter Property="Template">
     26             <Setter.Value>
     27                 <ControlTemplate TargetType="{x:Type RepeatButton}">
     28                     <Rectangle Fill="{TemplateBinding Background}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"/>
     29                 </ControlTemplate>
     30             </Setter.Value>
     31         </Setter>
     32     </Style>
     33     <Style x:Key="VerticalScrollBarPageButton" TargetType="{x:Type RepeatButton}">
     34         <Setter Property="OverridesDefaultStyle" Value="true"/>
     35         <Setter Property="Background" Value="Transparent"/>
     36         <Setter Property="Focusable" Value="false"/>
     37         <Setter Property="IsTabStop" Value="false"/>
     38         <Setter Property="Opacity" Value="0.2"/>
     39         <Setter Property="Template">
     40             <Setter.Value>
     41                 <ControlTemplate TargetType="{x:Type RepeatButton}">
     42                     <Rectangle Fill="{TemplateBinding Background}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"/>
     43                 </ControlTemplate>
     44             </Setter.Value>
     45         </Setter>
     46     </Style>
     47 
     48     <!--滚动条上下按钮-->
     49     <Style x:Key="VerticalScrollBarPageButton2" TargetType="{x:Type RepeatButton}">
     50         <Setter Property="OverridesDefaultStyle"  Value="true"/>
     51         <Setter Property="Background" Value="Transparent"/>
     52         <Setter Property="Focusable" Value="false"/>
     53         <Setter Property="IsTabStop" Value="false"/>
     54         <Setter Property="Opacity"  Value="0"/>
     55         <Setter Property="Template">
     56             <Setter.Value>
     57                 <ControlTemplate TargetType="{x:Type RepeatButton}">
     58                     <Rectangle Fill="#90000000" Width="0" Height="0"/>
     59                 </ControlTemplate>
     60             </Setter.Value>
     61         </Setter>
     62     </Style>
     63     <Style x:Key="for_scrollbar" TargetType="{x:Type ScrollBar}">
     64         <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/>
     65         <Setter Property="Stylus.IsFlicksEnabled" Value="false"/>
     66         <Setter Property="Background" Value="Transparent"/>
     67         <Setter Property="Margin" Value="0,1,1,6"/>
     68         <Setter Property="Width"  Value="10"/>
     69         <Setter Property="MinWidth"  Value="5"/>
     70         <Setter Property="Opacity"   Value="0.2"/>
     71         <Setter Property="Template">
     72             <Setter.Value>
     73                 <ControlTemplate TargetType="{x:Type ScrollBar}">
     74                     <Grid x:Name="Bg" SnapsToDevicePixels="true">
     75                         <Grid.RowDefinitions>
     76                             <RowDefinition Height="auto"></RowDefinition>
     77                             <RowDefinition Height="*"></RowDefinition>
     78                             <RowDefinition Height="auto"></RowDefinition>
     79                         </Grid.RowDefinitions>
     80                         <RepeatButton  Grid.Row="0" Style="{StaticResource VerticalScrollBarPageButton2}" Command="{x:Static ScrollBar.PageUpCommand}"/>
     81                         <Track x:Name="PART_Track"   Grid.Row="1" IsEnabled="{TemplateBinding IsMouseOver}" IsDirectionReversed="true">
     82                             <Track.DecreaseRepeatButton>
     83                                 <RepeatButton Style="{StaticResource VerticalScrollBarPageButton}" Command="{x:Static ScrollBar.PageUpCommand}"/>
     84                             </Track.DecreaseRepeatButton>
     85                             <Track.IncreaseRepeatButton>
     86                                 <RepeatButton Style="{StaticResource VerticalScrollBarPageButton}" Command="{x:Static ScrollBar.PageDownCommand}"/>
     87                             </Track.IncreaseRepeatButton>
     88                             <Track.Thumb>
     89                                 <Thumb Style="{StaticResource ScrollBarThumb}"/>
     90                             </Track.Thumb>
     91                         </Track>
     92                         <RepeatButton Grid.Row="2" Style="{StaticResource VerticalScrollBarPageButton2}" Command="{x:Static ScrollBar.PageDownCommand}"/>
     93                     </Grid>
     94                 </ControlTemplate>
     95             </Setter.Value>
     96         </Setter>
     97         <Style.Triggers>
     98             <Trigger Property="Orientation" Value="Horizontal">
     99                 <Setter Property="Background"  Value="Transparent"/>
    100                 <Setter Property="Margin" Value="1,0,6,1"/>
    101                 <Setter Property="Height"   Value="5"/>
    102                 <Setter Property="MinHeight"  Value="5"/>
    103                 <Setter Property="Width"    Value="Auto"/>
    104                 <Setter Property="Opacity" Value="0.2"/>
    105                 <Setter Property="Template">
    106                     <Setter.Value>
    107                         <ControlTemplate TargetType="{x:Type ScrollBar}">
    108                             <Grid x:Name="Bg" SnapsToDevicePixels="true">
    109                                 <Track x:Name="PART_Track" IsEnabled="{TemplateBinding IsMouseOver}">
    110                                     <Track.DecreaseRepeatButton>
    111                                         <RepeatButton Style="{StaticResource HorizontalScrollBarPageButton}"  Command="{x:Static ScrollBar.PageLeftCommand}"/>
    112                                     </Track.DecreaseRepeatButton>
    113                                     <Track.IncreaseRepeatButton>
    114                                         <RepeatButton Style="{StaticResource HorizontalScrollBarPageButton}"  Command="{x:Static ScrollBar.PageRightCommand}"/>
    115                                     </Track.IncreaseRepeatButton>
    116                                     <Track.Thumb>
    117                                         <Thumb Style="{StaticResource ScrollBarThumb}"/>
    118                                     </Track.Thumb>
    119                                 </Track>
    120                             </Grid>
    121                         </ControlTemplate>
    122                     </Setter.Value>
    123                 </Setter>
    124             </Trigger>
    125         </Style.Triggers>
    126     </Style>
    127     <Style x:Key="for_scrollviewer"
    128            TargetType="{x:Type ScrollViewer}">
    129         <Setter Property="BorderBrush" Value="LightGray"/>
    130         <Setter Property="BorderThickness" Value="0"/>
    131         <Setter Property="Template">
    132             <Setter.Value>
    133                 <ControlTemplate TargetType="{x:Type ScrollViewer}">
    134                     <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
    135                         <Grid Background="{TemplateBinding Background}">
    136                             <ScrollContentPresenter  Cursor="{TemplateBinding Cursor}" Margin="{TemplateBinding Padding}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
    137                             <ScrollBar x:Name="PART_VerticalScrollBar"
    138                                        HorizontalAlignment="Right"
    139                                        Maximum="{TemplateBinding ScrollableHeight}"
    140                                        Orientation="Vertical"
    141                                        Style="{StaticResource for_scrollbar}"
    142                                        ViewportSize="{TemplateBinding ViewportHeight}"
    143                                        Value="{TemplateBinding VerticalOffset}"
    144                                        Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>
    145                             <ScrollBar x:Name="PART_HorizontalScrollBar"
    146                                        Maximum="{TemplateBinding ScrollableWidth}"
    147                                        Orientation="Horizontal"
    148                                        Style="{StaticResource for_scrollbar}"
    149                                        VerticalAlignment="Bottom"
    150                                        Value="{TemplateBinding HorizontalOffset}"
    151                                        ViewportSize="{TemplateBinding ViewportWidth}"
    152                                        Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>
    153                         </Grid>
    154                     </Border>
    155                     <ControlTemplate.Triggers>
    156                         <EventTrigger RoutedEvent="ScrollChanged" >
    157                             <BeginStoryboard>
    158                                 <Storyboard>
    159                                     <DoubleAnimation
    160                                         Storyboard.TargetName="PART_VerticalScrollBar"
    161                                         Storyboard.TargetProperty="Opacity"
    162                                         To="0.8"
    163                                         Duration="0:0:1"/>
    164                                     <DoubleAnimation
    165                                         Storyboard.TargetName="PART_VerticalScrollBar"
    166                                         Storyboard.TargetProperty="Opacity"
    167                                         To="0.2"
    168                                         Duration="0:0:1"
    169                                         BeginTime="0:0:1"/>
    170                                     <DoubleAnimation
    171                                         Storyboard.TargetName="PART_HorizontalScrollBar"
    172                                         Storyboard.TargetProperty="Opacity"
    173                                         To="0.8"
    174                                         Duration="0:0:1"/>
    175                                     <DoubleAnimation
    176                                         Storyboard.TargetName="PART_HorizontalScrollBar"
    177                                         Storyboard.TargetProperty="Opacity"
    178                                         To="0.2"
    179                                         Duration="0:0:1"
    180                                         BeginTime="0:0:1"/>
    181                                 </Storyboard>
    182                             </BeginStoryboard>
    183                         </EventTrigger>
    184                         <EventTrigger RoutedEvent="MouseEnter"
    185                                       SourceName="PART_VerticalScrollBar">
    186                             <BeginStoryboard>
    187                                 <Storyboard>
    188                                     <DoubleAnimation
    189                                         Storyboard.TargetName="PART_VerticalScrollBar"
    190                                         Storyboard.TargetProperty="Opacity"
    191                                         To="0.8"
    192                                         Duration="0:0:0.7"/>
    193                                 </Storyboard>
    194                             </BeginStoryboard>
    195                         </EventTrigger>
    196                         <EventTrigger RoutedEvent="MouseLeave"
    197                                       SourceName="PART_VerticalScrollBar">
    198                             <BeginStoryboard>
    199                                 <Storyboard>
    200                                     <DoubleAnimation
    201                                         Storyboard.TargetName="PART_VerticalScrollBar"
    202                                         Storyboard.TargetProperty="Opacity"
    203                                         To="0.2"
    204                                         Duration="0:0:0.7"/>
    205                                 </Storyboard>
    206                             </BeginStoryboard>
    207                         </EventTrigger>
    208                         <EventTrigger RoutedEvent="MouseEnter"
    209                                       SourceName="PART_HorizontalScrollBar">
    210                             <BeginStoryboard>
    211                                 <Storyboard>
    212                                     <DoubleAnimation
    213                                         Storyboard.TargetName="PART_HorizontalScrollBar"
    214                                         Storyboard.TargetProperty="Opacity"
    215                                         To="0.8"
    216                                         Duration="0:0:0.7"/>
    217                                 </Storyboard>
    218                             </BeginStoryboard>
    219                         </EventTrigger>
    220                         <EventTrigger RoutedEvent="MouseLeave"
    221                                       SourceName="PART_HorizontalScrollBar">
    222                             <BeginStoryboard>
    223                                 <Storyboard>
    224                                     <DoubleAnimation
    225                                         Storyboard.TargetName="PART_HorizontalScrollBar"
    226                                         Storyboard.TargetProperty="Opacity"
    227                                         To="0.2"
    228                                         Duration="0:0:0.7"/>
    229                                 </Storyboard>
    230                             </BeginStoryboard>
    231                         </EventTrigger>
    232                     </ControlTemplate.Triggers>
    233                 </ControlTemplate>
    234             </Setter.Value>
    235         </Setter>
    236     </Style>
    237 
    238    
    239 </ResourceDictionary>
    View Code

    然后,在App.xaml里添加对资源文件的引用,<ResourceDictionary Source="pack://application:,,,/Resource/Scroll.xaml"/>。

    最后,将控件样式修改为自定义样式, <Style TargetType="ScrollBar" BasedOn="{StaticResource for_scrollbar}"/>

    <Style TargetType="ScrollViewer" BasedOn="{StaticResource for_scrollviewer}"/>。

    这样整个项目中的控件就会都变成自己想要的样式了。

  • 相关阅读:
    9、 vector与list的区别与应用?怎么找某vector或者list的倒数第二个元素
    8、STL的两级空间配置器
    hdoj--1342--Lotto(dfs)
    FZU--2188--过河(bfs暴力条件判断)
    zzuli--1812--sort(模拟水题)
    hdoj--3123--GCC(技巧阶乘取余)
    zzulioj--1089--make pair(dfs+模拟)
    zzulioj--1815--easy problem(暴力加技巧)
    zzulioj--1801--xue姐的小动物(水题)
    HIToj--1076--Ordered Fractions(水题)
  • 原文地址:https://www.cnblogs.com/lskFighting/p/12771492.html
Copyright © 2011-2022 走看看