zoukankan      html  css  js  c++  java
  • 在ListView中使用GridView, Style这样写:

    参考:http://msdn.microsoft.com/zh-cn/library/vstudio/ms788747.aspx

    需求,自定义ListView中的滚动条

    这岂不是很简单?刷刷刷写完了,可惜死活不管用。

    Bing之,发现,要这么写:

    主要是第一句:

     <Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}"  TargetType="ScrollViewer">
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="ScrollViewer">
              <Grid Background="{TemplateBinding Background}">
                <Grid.ColumnDefinitions>
                  <ColumnDefinition Width="*" />
                  <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                  <RowDefinition Height="*" />
                  <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
    
                <DockPanel Margin="{TemplateBinding Padding}">
                  <ScrollViewer DockPanel.Dock="Top"
                              HorizontalScrollBarVisibility="Hidden"
                              VerticalScrollBarVisibility="Hidden"
                              Focusable="false">
                    <GridViewHeaderRowPresenter Margin="2,0,2,0"
                                              Columns="{Binding Path=TemplatedParent.View.Columns,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              ColumnHeaderContainerStyle="{Binding
                    Path=TemplatedParent.View.ColumnHeaderContainerStyle,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              ColumnHeaderTemplate="{Binding
                    Path=TemplatedParent.View.ColumnHeaderTemplate,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              ColumnHeaderTemplateSelector="{Binding 
                    Path=TemplatedParent.View.ColumnHeaderTemplateSelector,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              AllowsColumnReorder="{Binding
                    Path=TemplatedParent.View.AllowsColumnReorder,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              ColumnHeaderContextMenu="{Binding
                    Path=TemplatedParent.View.ColumnHeaderContextMenu,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              ColumnHeaderToolTip="{Binding
                    Path=TemplatedParent.View.ColumnHeaderToolTip,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              SnapsToDevicePixels="{TemplateBinding
                    SnapsToDevicePixels}" />
                  </ScrollViewer>
    
                  <ScrollContentPresenter Name="PART_ScrollContentPresenter"
                                        KeyboardNavigation.DirectionalNavigation="Local"
                                        CanContentScroll="True"
                                        CanHorizontallyScroll="False"
                                        CanVerticallyScroll="False" />
                </DockPanel>
    
                <!--Define style for scroll bar-->
                <ScrollBar Name="PART_HorizontalScrollBar"
                         Orientation="Horizontal"
                           Style="{StaticResource HorizontalScrollBarStyle}"
                         Grid.Row="1"
                         Maximum="{TemplateBinding ScrollableWidth}"
                         ViewportSize="{TemplateBinding ViewportWidth}"
                         Value="{TemplateBinding HorizontalOffset}"
                         Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
                
                <!--Define style for scroll bar-->
                <ScrollBar Name="PART_VerticalScrollBar"
                         Grid.Column="1" 
                           Style="{StaticResource VerticalScrollBarStyle}"
                         Maximum="{TemplateBinding ScrollableHeight}"
                         ViewportSize="{TemplateBinding ViewportHeight}"
                         Value="{TemplateBinding VerticalOffset}"
                         Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
    
              </Grid>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
     
    横向滚动条和纵向滚动条的style就自己写吧。
    完整的style代码:
    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
    
    
      <!--Control colors.-->
      <Color x:Key="WindowColor">#FFE8EDF9</Color>
      <Color x:Key="ContentAreaColorLight">#FFC5CBF9</Color>
      <Color x:Key="ContentAreaColorDark">#FF7381F9</Color>
    
      <Color x:Key="DisabledControlLightColor">#FFE8EDF9</Color>
      <Color x:Key="DisabledControlDarkColor">#FFC5CBF9</Color>
      <Color x:Key="DisabledForegroundColor">#FF888888</Color>
    
      <Color x:Key="SelectedBackgroundColor">#FFC5CBF9</Color>
      <Color x:Key="SelectedUnfocusedColor">#FFDDDDDD</Color>
    
      <Color x:Key="ControlLightColor">White</Color>
      <Color x:Key="ControlMediumColor">#FF7381F9</Color>
      <Color x:Key="ControlDarkColor">#FF211AA9</Color>
    
      <Color x:Key="ControlMouseOverColor">#FF3843C4</Color>
      <Color x:Key="ControlPressedColor">#FF211AA9</Color>
    
    
      <Color x:Key="GlyphColor">#FF444444</Color>
      <Color x:Key="GlyphMouseOver">sc#1, 0.004391443, 0.002428215, 0.242281124</Color>
    
      <!--Border colors-->
      <Color x:Key="BorderLightColor">#FFCCCCCC</Color>
      <Color x:Key="BorderMediumColor">#FF888888</Color>
      <Color x:Key="BorderDarkColor">#FF444444</Color>
    
      <Color x:Key="PressedBorderLightColor">#FF888888</Color>
      <Color x:Key="PressedBorderDarkColor">#FF444444</Color>
    
      <Color x:Key="DisabledBorderLightColor">#FFAAAAAA</Color>
      <Color x:Key="DisabledBorderDarkColor">#FF888888</Color>
    
      <Color x:Key="DefaultBorderBrushDarkColor">Black</Color>
    
      <!--Control-specific resources.-->
      <Color x:Key="HeaderTopColor">#FFC5CBF9</Color>
      <Color x:Key="DatagridCurrentCellBorderColor">Black</Color>
      <Color x:Key="SliderTrackDarkColor">#FFC5CBF9</Color>
    
      <Color x:Key="NavButtonFrameColor">#FF3843C4</Color>
    
      <LinearGradientBrush x:Key="MenuPopupBrush"
                         EndPoint="0.5,1"
                         StartPoint="0.5,0">
        <GradientStop Color="{DynamicResource ControlLightColor}"
                    Offset="0" />
        <GradientStop Color="{DynamicResource ControlMediumColor}"
                    Offset="0.5" />
        <GradientStop Color="{DynamicResource ControlLightColor}"
                    Offset="1" />
      </LinearGradientBrush>
    
      <LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill"
                         StartPoint="0,0"
                         EndPoint="1,0">
        <LinearGradientBrush.GradientStops>
          <GradientStopCollection>
            <GradientStop Color="#000000FF"
                        Offset="0" />
            <GradientStop Color="#600000FF"
                        Offset="0.4" />
            <GradientStop Color="#600000FF"
                        Offset="0.6" />
            <GradientStop Color="#000000FF"
                        Offset="1" />
          </GradientStopCollection>
        </LinearGradientBrush.GradientStops>
      </LinearGradientBrush>
    
    
    
      <Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}"  TargetType="ScrollViewer">
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="ScrollViewer">
              <Grid Background="{TemplateBinding Background}">
                <Grid.ColumnDefinitions>
                  <ColumnDefinition Width="*" />
                  <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                  <RowDefinition Height="*" />
                  <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
    
                <DockPanel Margin="{TemplateBinding Padding}">
                  <ScrollViewer DockPanel.Dock="Top"
                              HorizontalScrollBarVisibility="Hidden"
                              VerticalScrollBarVisibility="Hidden"
                              Focusable="false">
                    <GridViewHeaderRowPresenter Margin="2,0,2,0"
                                              Columns="{Binding Path=TemplatedParent.View.Columns,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              ColumnHeaderContainerStyle="{Binding
                    Path=TemplatedParent.View.ColumnHeaderContainerStyle,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              ColumnHeaderTemplate="{Binding
                    Path=TemplatedParent.View.ColumnHeaderTemplate,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              ColumnHeaderTemplateSelector="{Binding 
                    Path=TemplatedParent.View.ColumnHeaderTemplateSelector,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              AllowsColumnReorder="{Binding
                    Path=TemplatedParent.View.AllowsColumnReorder,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              ColumnHeaderContextMenu="{Binding
                    Path=TemplatedParent.View.ColumnHeaderContextMenu,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              ColumnHeaderToolTip="{Binding
                    Path=TemplatedParent.View.ColumnHeaderToolTip,
                    RelativeSource={RelativeSource TemplatedParent}}"
                                              SnapsToDevicePixels="{TemplateBinding
                    SnapsToDevicePixels}" />
                  </ScrollViewer>
    
                  <ScrollContentPresenter Name="PART_ScrollContentPresenter"
                                        KeyboardNavigation.DirectionalNavigation="Local"
                                        CanContentScroll="True"
                                        CanHorizontallyScroll="False"
                                        CanVerticallyScroll="False" />
                </DockPanel>
    
                <ScrollBar Name="PART_HorizontalScrollBar"
                         Orientation="Horizontal"
                           Style="{StaticResource HorizontalScrollBarStyle}"
                         Grid.Row="1"
                         Maximum="{TemplateBinding ScrollableWidth}"
                         ViewportSize="{TemplateBinding ViewportWidth}"
                         Value="{TemplateBinding HorizontalOffset}"
                         Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
    
                <ScrollBar Name="PART_VerticalScrollBar"
                         Grid.Column="1" 
                           Style="{StaticResource VerticalScrollBarStyle}"
                         Maximum="{TemplateBinding ScrollableHeight}"
                         ViewportSize="{TemplateBinding ViewportHeight}"
                         Value="{TemplateBinding VerticalOffset}"
                         Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
    
              </Grid>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    
      <Style x:Key="GridViewColumnHeaderGripper"   TargetType="Thumb">
        <Setter Property="Width"
              Value="18" />
        <Setter Property="Background">
          <Setter.Value>
            <LinearGradientBrush StartPoint="0,0"
                               EndPoint="0,1">
              <LinearGradientBrush.GradientStops>
                <GradientStopCollection>
                  <GradientStop Color="{DynamicResource BorderLightColor}"
                              Offset="0.0" />
                  <GradientStop Color="{DynamicResource BorderDarkColor}"
                              Offset="1.0" />
                </GradientStopCollection>
              </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>
          </Setter.Value>
        </Setter>
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="{x:Type Thumb}">
              <Border Padding="{TemplateBinding Padding}"
                    Background="Transparent">
                <Rectangle HorizontalAlignment="Center"
                         Width="1"
                         Fill="{TemplateBinding Background}" />
              </Border>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
        <Setter Property="BorderBrush">
          <Setter.Value>
            <LinearGradientBrush EndPoint="0.5,1"
                               StartPoint="0.5,0">
              <GradientStop Color="Black"
                          Offset="0" />
              <GradientStop Color="White"
                          Offset="1" />
            </LinearGradientBrush>
          </Setter.Value>
        </Setter>
      </Style>
    
       
    
    
    </ResourceDictionary>
     
  • 相关阅读:
    Sql server数据库设计 7
    day08作业
    day01作业
    day07作业.
    day05作业
    day04作业
    day02作业
    初学Java的一些注意事项
    day07作业
    Week03面向对象入门
  • 原文地址:https://www.cnblogs.com/xiaokang088/p/3285077.html
Copyright © 2011-2022 走看看