Advertisement
PelicanDevelopment

ScrollBar + ScrollViewer

Jan 6th, 2021
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.91 KB | None | 0 0
  1. <Style x:Key="CustomScrollViewer" TargetType="{x:Type ScrollViewer}">
  2. <Setter Property="Template">
  3. <Setter.Value>
  4. <ControlTemplate TargetType="{x:Type ScrollViewer}">
  5. <Grid x:Name="Grid" Background="#282828">
  6. <Grid.ColumnDefinitions>
  7. <ColumnDefinition Width="*"/>
  8. <ColumnDefinition Width="Auto"/>
  9. </Grid.ColumnDefinitions>
  10. <Grid.RowDefinitions>
  11. <RowDefinition Height="*"/>
  12. <RowDefinition Height="Auto"/>
  13. </Grid.RowDefinitions>
  14. <Rectangle x:Name="Corner" Grid.Column="1" Fill="#FF282828" Grid.Row="1" Stroke="#FF282828"/>
  15. <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0"/>
  16. <ScrollBar x:Name="PART_VerticalScrollBar" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Grid.Row="0" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}" Background="#FF282828" BorderBrush="#FF303030" Foreground="#FF282828"/>
  17. <ScrollBar x:Name="PART_HorizontalScrollBar" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow" Grid.Column="0" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}" Foreground="{x:Null}" Background="#FF282828"/>
  18. </Grid>
  19. </ControlTemplate>
  20. </Setter.Value>
  21. </Setter>
  22. </Style>
  23. <SolidColorBrush x:Key="ScrollBar.Static.Background" Color="#282828"/>
  24. <SolidColorBrush x:Key="ScrollBar.Static.Border" Color="#282828"/>
  25. <SolidColorBrush x:Key="ScrollBar.Pressed.Glyph" Color="#282828"/>
  26. <SolidColorBrush x:Key="ScrollBar.MouseOver.Glyph" Color="#282828"/>
  27. <SolidColorBrush x:Key="ScrollBar.Disabled.Glyph" Color="#353535"/>
  28. <SolidColorBrush x:Key="ScrollBar.Static.Glyph" Color="#353535"/>
  29. <Style x:Key="FocusVisual">
  30. <Setter Property="Control.Template">
  31. <Setter.Value>
  32. <ControlTemplate>
  33. <Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
  34. </ControlTemplate>
  35. </Setter.Value>
  36. </Setter>
  37. </Style>
  38. <SolidColorBrush x:Key="ScrollBar.MouseOver.Background" Color="#282828"/>
  39. <SolidColorBrush x:Key="ScrollBar.MouseOver.Border" Color="#353535"/>
  40. <SolidColorBrush x:Key="ScrollBar.Pressed.Background" Color="#282828"/>
  41. <SolidColorBrush x:Key="ScrollBar.Pressed.Border" Color="#353535"/>
  42. <SolidColorBrush x:Key="ScrollBar.Disabled.Background" Color="#353535"/>
  43. <SolidColorBrush x:Key="ScrollBar.Disabled.Border" Color="#353535"/>
  44. <Style x:Key="{x:Type RepeatButton}" TargetType="{x:Type RepeatButton}">
  45. <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
  46. <Setter Property="BorderThickness" Value="1"/>
  47. <Setter Property="HorizontalContentAlignment" Value="Center"/>
  48. <Setter Property="VerticalContentAlignment" Value="Center"/>
  49. <Setter Property="Padding" Value="1"/>
  50. <Setter Property="Focusable" Value="false"/>
  51. <Setter Property="IsTabStop" Value="false"/>
  52. <Setter Property="Template">
  53. <Setter.Value>
  54. <ControlTemplate TargetType="{x:Type RepeatButton}">
  55. <Border x:Name="border" BorderBrush="{StaticResource ScrollBar.Static.Border}" BorderThickness="1" Background="{StaticResource ScrollBar.Static.Background}" SnapsToDevicePixels="true">
  56. <ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
  57. </Border>
  58. <ControlTemplate.Triggers>
  59. <Trigger Property="IsMouseOver" Value="true">
  60. <Setter Property="Background" TargetName="border" Value="{StaticResource ScrollBar.MouseOver.Background}"/>
  61. <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource ScrollBar.MouseOver.Border}"/>
  62. </Trigger>
  63. <Trigger Property="IsPressed" Value="true">
  64. <Setter Property="Background" TargetName="border" Value="{StaticResource ScrollBar.Pressed.Background}"/>
  65. <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource ScrollBar.Pressed.Border}"/>
  66. </Trigger>
  67. <Trigger Property="IsEnabled" Value="false">
  68. <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
  69. <Setter Property="Background" TargetName="border" Value="{StaticResource ScrollBar.Disabled.Background}"/>
  70. <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource ScrollBar.Disabled.Border}"/>
  71. </Trigger>
  72. </ControlTemplate.Triggers>
  73. </ControlTemplate>
  74. </Setter.Value>
  75. </Setter>
  76. </Style>
  77. <Style x:Key="RepeatButtonTransparent" TargetType="{x:Type RepeatButton}">
  78. <Setter Property="OverridesDefaultStyle" Value="true"/>
  79. <Setter Property="Background" Value="Transparent"/>
  80. <Setter Property="Focusable" Value="false"/>
  81. <Setter Property="IsTabStop" Value="false"/>
  82. <Setter Property="Template">
  83. <Setter.Value>
  84. <ControlTemplate TargetType="{x:Type RepeatButton}">
  85. <Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}"/>
  86. </ControlTemplate>
  87. </Setter.Value>
  88. </Setter>
  89. </Style>
  90. <SolidColorBrush x:Key="ScrollBar.MouseOver.Thumb" Color="#353535"/>
  91. <SolidColorBrush x:Key="ScrollBar.Pressed.Thumb" Color="#353535"/>
  92. <SolidColorBrush x:Key="ScrollBar.Static.Thumb" Color="#353535"/>
  93. <Style x:Key="ScrollBarThumbVertical" TargetType="{x:Type Thumb}">
  94. <Setter Property="OverridesDefaultStyle" Value="true"/>
  95. <Setter Property="IsTabStop" Value="false"/>
  96. <Setter Property="Template">
  97. <Setter.Value>
  98. <ControlTemplate TargetType="{x:Type Thumb}">
  99. <Rectangle x:Name="rectangle" Fill="{StaticResource ScrollBar.Static.Thumb}" Height="{TemplateBinding Height}" SnapsToDevicePixels="True" Width="{TemplateBinding Width}"/>
  100. <ControlTemplate.Triggers>
  101. <Trigger Property="IsMouseOver" Value="true">
  102. <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ScrollBar.MouseOver.Thumb}"/>
  103. </Trigger>
  104. <Trigger Property="IsDragging" Value="true">
  105. <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ScrollBar.Pressed.Thumb}"/>
  106. </Trigger>
  107. </ControlTemplate.Triggers>
  108. </ControlTemplate>
  109. </Setter.Value>
  110. </Setter>
  111. </Style>
  112. <Style x:Key="ScrollBarThumbHorizontal" TargetType="{x:Type Thumb}">
  113. <Setter Property="OverridesDefaultStyle" Value="true"/>
  114. <Setter Property="IsTabStop" Value="false"/>
  115. <Setter Property="Template">
  116. <Setter.Value>
  117. <ControlTemplate TargetType="{x:Type Thumb}">
  118. <Rectangle x:Name="rectangle" Fill="{StaticResource ScrollBar.Static.Thumb}" Height="{TemplateBinding Height}" SnapsToDevicePixels="True" Width="{TemplateBinding Width}"/>
  119. <ControlTemplate.Triggers>
  120. <Trigger Property="IsMouseOver" Value="true">
  121. <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ScrollBar.MouseOver.Thumb}"/>
  122. </Trigger>
  123. <Trigger Property="IsDragging" Value="true">
  124. <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource ScrollBar.Pressed.Thumb}"/>
  125. </Trigger>
  126. </ControlTemplate.Triggers>
  127. </ControlTemplate>
  128. </Setter.Value>
  129. </Setter>
  130. </Style>
  131. <Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
  132. <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/>
  133. <Setter Property="Stylus.IsFlicksEnabled" Value="false"/>
  134. <Setter Property="Background" Value="{StaticResource ScrollBar.Static.Background}"/>
  135. <Setter Property="BorderBrush" Value="{StaticResource ScrollBar.Static.Border}"/>
  136. <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
  137. <Setter Property="BorderThickness" Value="1,0"/>
  138. <Setter Property="Width" Value="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"/>
  139. <Setter Property="MinWidth" Value="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"/>
  140. <Setter Property="Template">
  141. <Setter.Value>
  142. <ControlTemplate TargetType="{x:Type ScrollBar}">
  143. <Grid x:Name="Bg" SnapsToDevicePixels="true" Background="#FF282828">
  144. <Grid.RowDefinitions>
  145. <RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>
  146. <RowDefinition Height="0.00001*"/>
  147. <RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>
  148. </Grid.RowDefinitions>
  149. <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Row="1"/>
  150. <RepeatButton x:Name="PART_LineUpButton" Command="{x:Static ScrollBar.LineUpCommand}" Background="#FF242424" Foreground="#FF282828">
  151. <Path x:Name="ArrowTop" Data="M 0,4 C0,4 0,6 0,6 0,6 3.5,2.5 3.5,2.5 3.5,2.5 7,6 7,6 7,6 7,4 7,4 7,4 3.5,0.5 3.5,0.5 3.5,0.5 0,4 0,4 z" Fill="{DynamicResource ScrollBar.Pressed.Border}" Margin="3,4,3,3"/>
  152. </RepeatButton>
  153. <Track x:Name="PART_Track" IsDirectionReversed="true" Grid.Row="1">
  154. <Track.DecreaseRepeatButton>
  155. <RepeatButton Command="{x:Static ScrollBar.PageUpCommand}" Style="{StaticResource RepeatButtonTransparent}"/>
  156. </Track.DecreaseRepeatButton>
  157. <Track.IncreaseRepeatButton>
  158. <RepeatButton Command="{x:Static ScrollBar.PageDownCommand}" Style="{StaticResource RepeatButtonTransparent}"/>
  159. </Track.IncreaseRepeatButton>
  160. <Track.Thumb>
  161. <Thumb Style="{StaticResource ScrollBarThumbVertical}"/>
  162. </Track.Thumb>
  163. </Track>
  164. <RepeatButton x:Name="PART_LineDownButton" Command="{x:Static ScrollBar.LineDownCommand}" Grid.Row="2" Background="#FF242424" Foreground="#FF282828">
  165. <Path x:Name="ArrowBottom" Data="M 0,2.5 C0,2.5 0,0.5 0,0.5 0,0.5 3.5,4 3.5,4 3.5,4 7,0.5 7,0.5 7,0.5 7,2.5 7,2.5 7,2.5 3.5,6 3.5,6 3.5,6 0,2.5 0,2.5 z" Fill="{StaticResource ScrollBar.Static.Glyph}" Margin="3,4,3,3"/>
  166. </RepeatButton>
  167. </Grid>
  168. <ControlTemplate.Triggers>
  169. <MultiDataTrigger>
  170. <MultiDataTrigger.Conditions>
  171. <Condition Binding="{Binding IsMouseOver, ElementName=PART_LineDownButton}" Value="true"/>
  172. <Condition Binding="{Binding IsPressed, ElementName=PART_LineDownButton}" Value="true"/>
  173. </MultiDataTrigger.Conditions>
  174. <Setter Property="Fill" TargetName="ArrowBottom" Value="{StaticResource ScrollBar.Pressed.Glyph}"/>
  175. </MultiDataTrigger>
  176. <MultiDataTrigger>
  177. <MultiDataTrigger.Conditions>
  178. <Condition Binding="{Binding IsMouseOver, ElementName=PART_LineUpButton}" Value="true"/>
  179. <Condition Binding="{Binding IsPressed, ElementName=PART_LineUpButton}" Value="true"/>
  180. </MultiDataTrigger.Conditions>
  181. <Setter Property="Fill" TargetName="ArrowTop" Value="{StaticResource ScrollBar.Pressed.Glyph}"/>
  182. </MultiDataTrigger>
  183. <MultiDataTrigger>
  184. <MultiDataTrigger.Conditions>
  185. <Condition Binding="{Binding IsMouseOver, ElementName=PART_LineDownButton}" Value="true"/>
  186. <Condition Binding="{Binding IsPressed, ElementName=PART_LineDownButton}" Value="false"/>
  187. </MultiDataTrigger.Conditions>
  188. <Setter Property="Fill" TargetName="ArrowBottom" Value="{StaticResource ScrollBar.MouseOver.Glyph}"/>
  189. </MultiDataTrigger>
  190. <MultiDataTrigger>
  191. <MultiDataTrigger.Conditions>
  192. <Condition Binding="{Binding IsMouseOver, ElementName=PART_LineUpButton}" Value="true"/>
  193. <Condition Binding="{Binding IsPressed, ElementName=PART_LineUpButton}" Value="false"/>
  194. </MultiDataTrigger.Conditions>
  195. <Setter Property="Fill" TargetName="ArrowTop" Value="{StaticResource ScrollBar.MouseOver.Glyph}"/>
  196. </MultiDataTrigger>
  197. <Trigger Property="IsEnabled" Value="false">
  198. <Setter Property="Fill" TargetName="ArrowTop" Value="{StaticResource ScrollBar.Disabled.Glyph}"/>
  199. <Setter Property="Fill" TargetName="ArrowBottom" Value="{StaticResource ScrollBar.Disabled.Glyph}"/>
  200. </Trigger>
  201. </ControlTemplate.Triggers>
  202. </ControlTemplate>
  203. </Setter.Value>
  204. </Setter>
  205. <Style.Triggers>
  206. <Trigger Property="Orientation" Value="Horizontal">
  207. <Setter Property="Width" Value="Auto"/>
  208. <Setter Property="MinWidth" Value="0"/>
  209. <Setter Property="Height" Value="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarHeightKey}}"/>
  210. <Setter Property="MinHeight" Value="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarHeightKey}}"/>
  211. <Setter Property="BorderThickness" Value="0,1"/>
  212. <Setter Property="Template">
  213. <Setter.Value>
  214. <ControlTemplate TargetType="{x:Type ScrollBar}">
  215. <Grid x:Name="Bg" SnapsToDevicePixels="true">
  216. <Grid.ColumnDefinitions>
  217. <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}"/>
  218. <ColumnDefinition Width="0.00001*"/>
  219. <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}"/>
  220. </Grid.ColumnDefinitions>
  221. <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="1"/>
  222. <RepeatButton x:Name="PART_LineLeftButton" Command="{x:Static ScrollBar.LineLeftCommand}">
  223. <Path x:Name="ArrowLeft" Data="M 3.18,7 C3.18,7 5,7 5,7 5,7 1.81,3.5 1.81,3.5 1.81,3.5 5,0 5,0 5,0 3.18,0 3.18,0 3.18,0 0,3.5 0,3.5 0,3.5 3.18,7 3.18,7 z" Fill="{StaticResource ScrollBar.Static.Glyph}" Margin="3" Stretch="Uniform"/>
  224. </RepeatButton>
  225. <Track x:Name="PART_Track" Grid.Column="1" IsEnabled="{TemplateBinding IsMouseOver}">
  226. <Track.DecreaseRepeatButton>
  227. <RepeatButton Command="{x:Static ScrollBar.PageLeftCommand}" Style="{StaticResource RepeatButtonTransparent}"/>
  228. </Track.DecreaseRepeatButton>
  229. <Track.IncreaseRepeatButton>
  230. <RepeatButton Command="{x:Static ScrollBar.PageRightCommand}" Style="{StaticResource RepeatButtonTransparent}"/>
  231. </Track.IncreaseRepeatButton>
  232. <Track.Thumb>
  233. <Thumb Style="{StaticResource ScrollBarThumbHorizontal}"/>
  234. </Track.Thumb>
  235. </Track>
  236. <RepeatButton x:Name="PART_LineRightButton" Grid.Column="2" Command="{x:Static ScrollBar.LineRightCommand}">
  237. <Path x:Name="ArrowRight" Data="M 1.81,7 C1.81,7 0,7 0,7 0,7 3.18,3.5 3.18,3.5 3.18,3.5 0,0 0,0 0,0 1.81,0 1.81,0 1.81,0 5,3.5 5,3.5 5,3.5 1.81,7 1.81,7 z" Fill="{StaticResource ScrollBar.Static.Glyph}" Margin="3" Stretch="Uniform"/>
  238. </RepeatButton>
  239. </Grid>
  240. <ControlTemplate.Triggers>
  241. <MultiDataTrigger>
  242. <MultiDataTrigger.Conditions>
  243. <Condition Binding="{Binding IsMouseOver, ElementName=PART_LineRightButton}" Value="true"/>
  244. <Condition Binding="{Binding IsPressed, ElementName=PART_LineRightButton}" Value="true"/>
  245. </MultiDataTrigger.Conditions>
  246. <Setter Property="Fill" TargetName="ArrowRight" Value="{StaticResource ScrollBar.Pressed.Glyph}"/>
  247. </MultiDataTrigger>
  248. <MultiDataTrigger>
  249. <MultiDataTrigger.Conditions>
  250. <Condition Binding="{Binding IsMouseOver, ElementName=PART_LineLeftButton}" Value="true"/>
  251. <Condition Binding="{Binding IsPressed, ElementName=PART_LineLeftButton}" Value="true"/>
  252. </MultiDataTrigger.Conditions>
  253. <Setter Property="Fill" TargetName="ArrowLeft" Value="{StaticResource ScrollBar.Pressed.Glyph}"/>
  254. </MultiDataTrigger>
  255. <MultiDataTrigger>
  256. <MultiDataTrigger.Conditions>
  257. <Condition Binding="{Binding IsMouseOver, ElementName=PART_LineRightButton}" Value="true"/>
  258. <Condition Binding="{Binding IsPressed, ElementName=PART_LineRightButton}" Value="false"/>
  259. </MultiDataTrigger.Conditions>
  260. <Setter Property="Fill" TargetName="ArrowRight" Value="{StaticResource ScrollBar.MouseOver.Glyph}"/>
  261. </MultiDataTrigger>
  262. <MultiDataTrigger>
  263. <MultiDataTrigger.Conditions>
  264. <Condition Binding="{Binding IsMouseOver, ElementName=PART_LineLeftButton}" Value="true"/>
  265. <Condition Binding="{Binding IsPressed, ElementName=PART_LineLeftButton}" Value="false"/>
  266. </MultiDataTrigger.Conditions>
  267. <Setter Property="Fill" TargetName="ArrowLeft" Value="{StaticResource ScrollBar.MouseOver.Glyph}"/>
  268. </MultiDataTrigger>
  269. <Trigger Property="IsEnabled" Value="false">
  270. <Setter Property="Fill" TargetName="ArrowLeft" Value="{StaticResource ScrollBar.Disabled.Glyph}"/>
  271. <Setter Property="Fill" TargetName="ArrowRight" Value="{StaticResource ScrollBar.Disabled.Glyph}"/>
  272. </Trigger>
  273. </ControlTemplate.Triggers>
  274. </ControlTemplate>
  275. </Setter.Value>
  276. </Setter>
  277. </Trigger>
  278. </Style.Triggers>
  279. </Style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement