ScorllViewerStyle.xaml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  2. <!-- 滚动条凹槽背景色 -->
  3. <SolidColorBrush x:Key="ScrollBar_Background">#F0F0F0</SolidColorBrush>
  4. <SolidColorBrush x:Key="ScrollThumb_Background">#C8C9CC</SolidColorBrush>
  5. <SolidColorBrush x:Key="ScrollThumb_MouseOver_Background">#686868</SolidColorBrush>
  6. <!-- 滚动条样式 add by zhidf 2015.12.25 -->
  7. <Style TargetType="{x:Type ScrollViewer}">
  8. <Setter Property="Control.Template">
  9. <Setter.Value>
  10. <ControlTemplate TargetType="{x:Type ScrollViewer}">
  11. <Grid x:Name="Grid" Background="{TemplateBinding Background}">
  12. <Grid.ColumnDefinitions>
  13. <ColumnDefinition Width="*" />
  14. <ColumnDefinition Width="Auto" />
  15. </Grid.ColumnDefinitions>
  16. <Grid.RowDefinitions>
  17. <RowDefinition Height="*" />
  18. <RowDefinition Height="Auto" />
  19. </Grid.RowDefinitions>
  20. <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" Grid.Row="0" Grid.Column="0"
  21. Margin="{TemplateBinding Padding}"
  22. CanContentScroll="{TemplateBinding CanContentScroll}"
  23. CanHorizontallyScroll="False" CanVerticallyScroll="False"
  24. Content="{TemplateBinding Content}"
  25. ContentTemplate="{TemplateBinding ContentTemplate}" />
  26. <ScrollBar x:Name="PART_VerticalScrollBar" Grid.Row="0" Grid.Column="1" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow"
  27. Maximum="{TemplateBinding ScrollableHeight}"
  28. Minimum="0"
  29. Style="{DynamicResource MyScrollBarStyle}"
  30. ViewportSize="{TemplateBinding ViewportHeight}"
  31. Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
  32. Value="{Binding VerticalOffset,
  33. Mode=OneWay,
  34. RelativeSource={RelativeSource TemplatedParent}}" />
  35. <ScrollBar x:Name="PART_HorizontalScrollBar" Grid.Row="1" Grid.Column="0" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow"
  36. Maximum="{TemplateBinding ScrollableWidth}"
  37. Minimum="0" Orientation="Horizontal"
  38. Style="{DynamicResource MyScrollBarStyle}"
  39. ViewportSize="{TemplateBinding ViewportWidth}"
  40. Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
  41. Value="{Binding HorizontalOffset,
  42. Mode=OneWay,
  43. RelativeSource={RelativeSource TemplatedParent}}" />
  44. <Rectangle x:Name="Corner" Grid.Row="1" Grid.Column="1" Fill="White" />
  45. </Grid>
  46. </ControlTemplate>
  47. </Setter.Value>
  48. </Setter>
  49. </Style>
  50. <!-- 应该在此定义资源字典条目。 -->
  51. <SolidColorBrush x:Key="ScrollBarDisabledBackground" Color="#F4F4F4" />
  52. <Style x:Key="VerticalScrollBarPageButton" TargetType="{x:Type RepeatButton}">
  53. <Setter Property="OverridesDefaultStyle" Value="true" />
  54. <Setter Property="Background" Value="Transparent" />
  55. <Setter Property="Focusable" Value="false" />
  56. <Setter Property="IsTabStop" Value="false" />
  57. <Setter Property="Template">
  58. <Setter.Value>
  59. <ControlTemplate TargetType="{x:Type RepeatButton}">
  60. <Rectangle Width="{TemplateBinding Width}"
  61. Height="{TemplateBinding Height}"
  62. Fill="{TemplateBinding Background}" />
  63. </ControlTemplate>
  64. </Setter.Value>
  65. </Setter>
  66. </Style>
  67. <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">
  68. <Setter Property="OverridesDefaultStyle" Value="true" />
  69. <Setter Property="IsTabStop" Value="false" />
  70. <Setter Property="Template">
  71. <Setter.Value>
  72. <ControlTemplate TargetType="{x:Type Thumb}">
  73. <Rectangle x:Name="thumbRect" Fill="{StaticResource ScrollThumb_Background}" RadiusX="3" RadiusY="3" />
  74. <ControlTemplate.Triggers>
  75. <Trigger Property="IsMouseOver" Value="True">
  76. <Setter TargetName="thumbRect" Property="Fill" Value="{StaticResource ScrollThumb_MouseOver_Background}" />
  77. </Trigger>
  78. </ControlTemplate.Triggers>
  79. </ControlTemplate>
  80. </Setter.Value>
  81. </Setter>
  82. </Style>
  83. <Style x:Key="HorizontalScrollBarPageButton" TargetType="{x:Type RepeatButton}">
  84. <Setter Property="OverridesDefaultStyle" Value="true" />
  85. <Setter Property="Background" Value="Transparent" />
  86. <Setter Property="Focusable" Value="false" />
  87. <Setter Property="IsTabStop" Value="false" />
  88. <Setter Property="Template">
  89. <Setter.Value>
  90. <ControlTemplate TargetType="{x:Type RepeatButton}">
  91. <Rectangle Width="{TemplateBinding Width}"
  92. Height="{TemplateBinding Height}"
  93. Fill="{TemplateBinding Background}" />
  94. </ControlTemplate>
  95. </Setter.Value>
  96. </Setter>
  97. </Style>
  98. <Style x:Key="MyScrollBarStyle" TargetType="{x:Type ScrollBar}">
  99. <Setter Property="Background" Value="AliceBlue" />
  100. <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" />
  101. <Setter Property="Stylus.IsFlicksEnabled" Value="false" />
  102. <Setter Property="Width" Value="6" />
  103. <Setter Property="MinWidth" Value="6" />
  104. <Setter Property="Template">
  105. <Setter.Value>
  106. <ControlTemplate TargetType="{x:Type ScrollBar}">
  107. <!-- 滚动条底部凹槽颜色 -->
  108. <Grid x:Name="Bg" Width="6"
  109. Background="{StaticResource ScrollBar_Background}"
  110. SnapsToDevicePixels="true">
  111. <Grid.RowDefinitions>
  112. <RowDefinition />
  113. </Grid.RowDefinitions>
  114. <Track x:Name="PART_Track" IsDirectionReversed="true"
  115. IsEnabled="{TemplateBinding IsMouseOver}">
  116. <Track.DecreaseRepeatButton>
  117. <RepeatButton Command="{x:Static ScrollBar.PageUpCommand}" Style="{StaticResource VerticalScrollBarPageButton}" />
  118. </Track.DecreaseRepeatButton>
  119. <Track.IncreaseRepeatButton>
  120. <RepeatButton Command="{x:Static ScrollBar.PageDownCommand}" Style="{StaticResource VerticalScrollBarPageButton}" />
  121. </Track.IncreaseRepeatButton>
  122. <Track.Thumb>
  123. <Thumb Style="{StaticResource ScrollBarThumb}" />
  124. </Track.Thumb>
  125. </Track>
  126. </Grid>
  127. <ControlTemplate.Triggers>
  128. <Trigger Property="IsEnabled" Value="false">
  129. <Setter TargetName="Bg" Property="Background" Value="{StaticResource ScrollBarDisabledBackground}" />
  130. </Trigger>
  131. </ControlTemplate.Triggers>
  132. </ControlTemplate>
  133. </Setter.Value>
  134. </Setter>
  135. <Style.Triggers>
  136. <Trigger Property="Orientation" Value="Horizontal">
  137. <Setter Property="Width" Value="Auto" />
  138. <Setter Property="MinWidth" Value="0" />
  139. <Setter Property="Height" Value="6" />
  140. <Setter Property="MinHeight" Value="6" />
  141. <Setter Property="Background" Value="AliceBlue" />
  142. <Setter Property="Template">
  143. <Setter.Value>
  144. <ControlTemplate TargetType="{x:Type ScrollBar}">
  145. <Grid x:Name="Bg" Background="AliceBlue" SnapsToDevicePixels="true">
  146. <Grid.ColumnDefinitions>
  147. <ColumnDefinition />
  148. </Grid.ColumnDefinitions>
  149. <Track x:Name="PART_Track" IsEnabled="{TemplateBinding IsMouseOver}">
  150. <Track.DecreaseRepeatButton>
  151. <RepeatButton Command="{x:Static ScrollBar.PageLeftCommand}" Style="{StaticResource HorizontalScrollBarPageButton}" />
  152. </Track.DecreaseRepeatButton>
  153. <Track.IncreaseRepeatButton>
  154. <RepeatButton Command="{x:Static ScrollBar.PageRightCommand}" Style="{StaticResource HorizontalScrollBarPageButton}" />
  155. </Track.IncreaseRepeatButton>
  156. <Track.Thumb>
  157. <Thumb Style="{StaticResource ScrollBarThumb}" />
  158. </Track.Thumb>
  159. </Track>
  160. </Grid>
  161. <ControlTemplate.Triggers>
  162. <Trigger Property="IsEnabled" Value="false">
  163. <Setter TargetName="Bg" Property="Background" Value="{StaticResource ScrollBarDisabledBackground}" />
  164. </Trigger>
  165. </ControlTemplate.Triggers>
  166. </ControlTemplate>
  167. </Setter.Value>
  168. </Setter>
  169. </Trigger>
  170. </Style.Triggers>
  171. </Style>
  172. <!-- 滚动条样式 -->
  173. </ResourceDictionary>