zoukankan      html  css  js  c++  java
  • ControlTemplate in WPF ——ScrollBar

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Shared.xaml" />
      </ResourceDictionary.MergedDictionaries>
    
      <!--<SnippetScrollBar>-->
      <!--<SnippetRepeatButton>-->
      <Style x:Key="ScrollBarLineButton"
             TargetType="{x:Type RepeatButton}">
        <Setter Property="SnapsToDevicePixels"
                Value="True" />
        <Setter Property="OverridesDefaultStyle"
                Value="true" />
        <Setter Property="Focusable"
                Value="false" />
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="{x:Type RepeatButton}">
              <Border x:Name="Border"
                      Margin="1"
                      CornerRadius="2"
                      BorderThickness="1">
                <Border.BorderBrush>
                  <LinearGradientBrush StartPoint="0,0"
                                       EndPoint="0,1">
                    <LinearGradientBrush.GradientStops>
                      <GradientStopCollection>
                        <GradientStop Color="{DynamicResource BorderMediumColor}"
                                      Offset="0.0" />
                        <GradientStop Color="{DynamicResource BorderDarkColor}"
                                      Offset="1.0" />
                      </GradientStopCollection>
                    </LinearGradientBrush.GradientStops>
                  </LinearGradientBrush>
                </Border.BorderBrush>
                <Border.Background>
                  <LinearGradientBrush StartPoint="0,0"
                                       EndPoint="0,1">
                    <LinearGradientBrush.GradientStops>
                      <GradientStopCollection>
                        <GradientStop Color="{DynamicResource ControlLightColor}"/>
                        <GradientStop Color="{DynamicResource ControlMediumColor}"
                                      Offset="1.0" />
                      </GradientStopCollection>
                    </LinearGradientBrush.GradientStops>
                  </LinearGradientBrush>
                </Border.Background>
                <VisualStateManager.VisualStateGroups>
                  <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal" />
                    <VisualState x:Name="MouseOver" />
                    <VisualState x:Name="Pressed">
                      <Storyboard>
                        <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                                      Storyboard.TargetProperty="(Panel.Background).
                          (GradientBrush.GradientStops)[1].(GradientStop.Color)">
                          <EasingColorKeyFrame KeyTime="0"
                                               Value="{StaticResource ControlPressedColor}" />
                        </ColorAnimationUsingKeyFrames>
                      </Storyboard>
                    </VisualState>
                    <VisualState x:Name="Disabled">
                      <Storyboard>
                        <ColorAnimationUsingKeyFrames Storyboard.TargetName="Arrow"
                                                      Storyboard.TargetProperty="(Shape.Fill).
                          (SolidColorBrush.Color)">
                          <EasingColorKeyFrame KeyTime="0"
                                               Value="{StaticResource DisabledForegroundColor}" />
                        </ColorAnimationUsingKeyFrames>
                      </Storyboard>
                    </VisualState>
                  </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
                <Path x:Name="Arrow"
                      HorizontalAlignment="Center"
                      VerticalAlignment="Center"
                      Data="{Binding Content, 
                  RelativeSource={RelativeSource TemplatedParent}}" >
                    <Path.Fill>
                        <SolidColorBrush Color="{DynamicResource GlyphColor}"/>
                    </Path.Fill>
                </Path>
              </Border>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
      <!--</SnippetRepeatButton>-->
    
      <Style x:Key="ScrollBarPageButton"
             TargetType="{x:Type RepeatButton}">
        <Setter Property="SnapsToDevicePixels"
                Value="True" />
        <Setter Property="OverridesDefaultStyle"
                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="SnapsToDevicePixels"
                Value="True" />
        <Setter Property="OverridesDefaultStyle"
                Value="true" />
        <Setter Property="IsTabStop"
                Value="false" />
        <Setter Property="Focusable"
                Value="false" />
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="{x:Type Thumb}">
              <Border CornerRadius="2"
                      Background="{TemplateBinding Background}"
                      BorderBrush="{TemplateBinding BorderBrush}"
                      BorderThickness="1" />
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    
      <ControlTemplate x:Key="VerticalScrollBar"
                       TargetType="{x:Type ScrollBar}">
        <Grid>
          <Grid.RowDefinitions>
            <RowDefinition MaxHeight="18" />
            <RowDefinition Height="0.00001*" />
            <RowDefinition MaxHeight="18" />
          </Grid.RowDefinitions>
          <Border Grid.RowSpan="3"
                  CornerRadius="2"
                  Background="#F0F0F0" />
          <RepeatButton Grid.Row="0"
                        Style="{StaticResource ScrollBarLineButton}"
                        Height="18"
                        Command="ScrollBar.LineUpCommand"
                        Content="M 0 4 L 8 4 L 4 0 Z" />
          <Track x:Name="PART_Track"
                 Grid.Row="1"
                 IsDirectionReversed="true">
            <Track.DecreaseRepeatButton>
              <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                            Command="ScrollBar.PageUpCommand" />
            </Track.DecreaseRepeatButton>
            <Track.Thumb>
              <Thumb Style="{StaticResource ScrollBarThumb}"
                     Margin="1,0,1,0">
                <Thumb.BorderBrush>
    
                  <LinearGradientBrush StartPoint="0,0"
                                       EndPoint="1,0">
                    <LinearGradientBrush.GradientStops>
                      <GradientStopCollection>
                        <GradientStop Color="{DynamicResource BorderLightColor}"
                                      Offset="0.0" />
                        <GradientStop Color="{DynamicResource BorderDarkColor}"
                                      Offset="1.0" />
                      </GradientStopCollection>
                    </LinearGradientBrush.GradientStops>
                  </LinearGradientBrush>
    
                </Thumb.BorderBrush>
                <Thumb.Background>
    
                  <LinearGradientBrush StartPoint="0,0"
                                       EndPoint="1,0">
                    <LinearGradientBrush.GradientStops>
                      <GradientStopCollection>
                        <GradientStop Color="{DynamicResource ControlLightColor}"
                                      Offset="0.0" />
                        <GradientStop Color="{DynamicResource ControlMediumColor}"
                                      Offset="1.0" />
                      </GradientStopCollection>
                    </LinearGradientBrush.GradientStops>
                  </LinearGradientBrush>
    
                </Thumb.Background>
              </Thumb>
            </Track.Thumb>
            <Track.IncreaseRepeatButton>
              <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                            Command="ScrollBar.PageDownCommand" />
            </Track.IncreaseRepeatButton>
          </Track>
          <RepeatButton Grid.Row="3"
                        Style="{StaticResource ScrollBarLineButton}"
                        Height="18"
                        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="18" />
            <ColumnDefinition Width="0.00001*" />
            <ColumnDefinition MaxWidth="18" />
          </Grid.ColumnDefinitions>
          <Border Grid.ColumnSpan="3"
                  CornerRadius="2"
                  Background="#F0F0F0" />
          <RepeatButton Grid.Column="0"
                        Style="{StaticResource ScrollBarLineButton}"
                        Width="18"
                        Command="ScrollBar.LineLeftCommand"
                        Content="M 4 0 L 4 8 L 0 4 Z" />
          <!--<SnippetRepeatButtonStyle_a_lileib>-->
          <Track x:Name="PART_Track"
                 Grid.Column="1"
                 IsDirectionReversed="False">
            <Track.DecreaseRepeatButton>
              <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                            Command="ScrollBar.PageLeftCommand" />
            </Track.DecreaseRepeatButton>
            <Track.Thumb>
              <Thumb Style="{StaticResource ScrollBarThumb}"
                     Margin="0,1,0,1">
    
                <Thumb.BorderBrush>
    
                  <LinearGradientBrush StartPoint="0,0"
                                       EndPoint="1,0">
                    <LinearGradientBrush.GradientStops>
                      <GradientStopCollection>
                        <GradientStop Color="{DynamicResource BorderLightColor}"
                                      Offset="0.0" />
                        <GradientStop Color="{DynamicResource BorderDarkColor}"
                                      Offset="1.0" />
                      </GradientStopCollection>
                    </LinearGradientBrush.GradientStops>
                  </LinearGradientBrush>
    
                </Thumb.BorderBrush>
                <Thumb.Background>
    
                  <LinearGradientBrush StartPoint="0,0"
                                       EndPoint="0,1">
                    <LinearGradientBrush.GradientStops>
                      <GradientStopCollection>
                        <GradientStop Color="{DynamicResource ControlLightColor}"
                                      Offset="0.0" />
                        <GradientStop Color="{DynamicResource ControlMediumColor}"
                                      Offset="1.0" />
                      </GradientStopCollection>
                    </LinearGradientBrush.GradientStops>
                  </LinearGradientBrush>
    
                </Thumb.Background>
              </Thumb>
            </Track.Thumb>
            <Track.IncreaseRepeatButton>
              <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                            Command="ScrollBar.PageRightCommand" />
            </Track.IncreaseRepeatButton>
          </Track>
          <!--</SnippetRepeatButtonStyle_a_lileib>-->
          <RepeatButton Grid.Column="3"
                        Style="{StaticResource ScrollBarLineButton}"
                        Width="18"
                        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="SnapsToDevicePixels"
                Value="True" />
        <Setter Property="OverridesDefaultStyle"
                Value="true" />
        <Style.Triggers>
          <Trigger Property="Orientation"
                   Value="Horizontal">
            <Setter Property="Width"
                    Value="Auto" />
            <Setter Property="Height"
                    Value="18" />
            <Setter Property="Template"
                    Value="{StaticResource HorizontalScrollBar}" />
          </Trigger>
          <Trigger Property="Orientation"
                   Value="Vertical">
            <Setter Property="Width"
                    Value="18" />
            <Setter Property="Height"
                    Value="Auto" />
            <Setter Property="Template"
                    Value="{StaticResource VerticalScrollBar}" />
          </Trigger>
        </Style.Triggers>
      </Style>
      <!--</SnippetScrollBar>-->
    </ResourceDictionary>
  • 相关阅读:
    【HTML5 绘图与动画】使用canvas
    【H5新增元素和文档结构】新的全局属性 1. contentEditable 可编辑内容 2. contextmenu 快捷菜单 3. data 自定义属性 4. draggable 可拖动 5. dropzone 拖动数据 6. hidden 隐藏 7. spellcheck 语法检查 8. translate 可翻译
    【H5新增元素和文档结构】完善旧元素 1. a 超链接 2. ol 有序列表 3. dl 定义列表 4. cite 引用文本 5. small 小号字体 6. iframe 浮动框架 7. script 脚本
    【H5新增元素和文档结构】新的语义信息 1. address 2. time 3. figure 跟 figcaption 4. details 和 summary 5. mark 6. progress 7. meter 8. dialog 9.bdi 10. wbr 11. ruby、rt、rp 12. command
    【H5新增元素跟文档结构】新的文档结构 1. article 文章块 2. section 区块 3. nav 导航条 4. aside 辅助栏 5. main 主要区域 6. header 标题栏 7. hgroup 标题组 8. footer 页脚栏
    5_PHP数组_3_数组处理函数及其应用_9_数组集合运算函数
    【华为云技术分享】鲲鹏弹性云服务器GCC交叉编译环境搭建指南
    【华为云技术分享】7 分钟全面了解位运算
    【华为云技术分享】Linux内核编程环境 (1)
    【华为云技术分享】华为云MySQL 8.0正式商用,全新增强版开源利器强势来袭
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/7410577.html
Copyright © 2011-2022 走看看