ScrollViewerBaseStyle.xaml 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:hc="clr-namespace:HandyControl.Controls">
  4. <Style x:Key="ScrollBarBaseRepeatButton" TargetType="RepeatButton">
  5. <Setter Property="OverridesDefaultStyle" Value="true"/>
  6. <Setter Property="Background" Value="Transparent"/>
  7. <Setter Property="Focusable" Value="false"/>
  8. <Setter Property="IsTabStop" Value="false"/>
  9. <Setter Property="Template">
  10. <Setter.Value>
  11. <ControlTemplate TargetType="RepeatButton">
  12. <Rectangle Fill="{TemplateBinding Background}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}"/>
  13. </ControlTemplate>
  14. </Setter.Value>
  15. </Setter>
  16. </Style>
  17. <Style x:Key="ScrollBarBaseThumbVertical" TargetType="Thumb">
  18. <Setter Property="OverridesDefaultStyle" Value="true"/>
  19. <Setter Property="IsTabStop" Value="false"/>
  20. <Setter Property="Template">
  21. <Setter.Value>
  22. <ControlTemplate TargetType="Thumb">
  23. <ControlTemplate.Resources>
  24. <Storyboard x:Key="StoryboardMouseEnter">
  25. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Width" Storyboard.TargetName="rectangle">
  26. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value="8"/>
  27. </DoubleAnimationUsingKeyFrames>
  28. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.RadiusX)" Storyboard.TargetName="rectangle">
  29. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value="4"/>
  30. </DoubleAnimationUsingKeyFrames>
  31. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.RadiusY)" Storyboard.TargetName="rectangle">
  32. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value="4"/>
  33. </DoubleAnimationUsingKeyFrames>
  34. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)" Storyboard.TargetName="rectangle">
  35. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value="0"/>
  36. </DoubleAnimationUsingKeyFrames>
  37. </Storyboard>
  38. <Storyboard x:Key="StoryboardMouseLeave">
  39. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Width" Storyboard.TargetName="rectangle">
  40. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="2"/>
  41. </DoubleAnimationUsingKeyFrames>
  42. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.RadiusX)" Storyboard.TargetName="rectangle">
  43. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="1"/>
  44. </DoubleAnimationUsingKeyFrames>
  45. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.RadiusY)" Storyboard.TargetName="rectangle">
  46. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="1"/>
  47. </DoubleAnimationUsingKeyFrames>
  48. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)" Storyboard.TargetName="rectangle">
  49. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="-2"/>
  50. </DoubleAnimationUsingKeyFrames>
  51. </Storyboard>
  52. </ControlTemplate.Resources>
  53. <Border Width="{TemplateBinding Width}" Background="Transparent">
  54. <Rectangle x:Name="rectangle" RadiusX="1" RadiusY="1" HorizontalAlignment="Right" Height="{TemplateBinding Height}" SnapsToDevicePixels="True" Width="2" Fill="{TemplateBinding Background}">
  55. <Rectangle.RenderTransform>
  56. <TransformGroup>
  57. <TranslateTransform X="-2"/>
  58. </TransformGroup>
  59. </Rectangle.RenderTransform>
  60. </Rectangle>
  61. </Border>
  62. <ControlTemplate.Triggers>
  63. <Trigger Property="IsMouseOver" Value="true">
  64. <Setter Property="Fill" TargetName="rectangle" Value="{DynamicResource SecondaryTextBrush}"/>
  65. </Trigger>
  66. <Trigger Property="IsDragging" Value="true">
  67. <Setter Property="Fill" TargetName="rectangle" Value="{DynamicResource PrimaryTextBrush}"/>
  68. </Trigger>
  69. <EventTrigger RoutedEvent="MouseEnter">
  70. <BeginStoryboard Storyboard="{StaticResource StoryboardMouseEnter}"/>
  71. </EventTrigger>
  72. <EventTrigger RoutedEvent="MouseLeave">
  73. <BeginStoryboard Storyboard="{StaticResource StoryboardMouseLeave}"/>
  74. </EventTrigger>
  75. </ControlTemplate.Triggers>
  76. </ControlTemplate>
  77. </Setter.Value>
  78. </Setter>
  79. </Style>
  80. <Style x:Key="ScrollBarBaseThumbHorizontal" TargetType="Thumb">
  81. <Setter Property="OverridesDefaultStyle" Value="true"/>
  82. <Setter Property="IsTabStop" Value="false"/>
  83. <Setter Property="Template">
  84. <Setter.Value>
  85. <ControlTemplate TargetType="Thumb">
  86. <ControlTemplate.Resources>
  87. <Storyboard x:Key="StoryboardMouseEnter">
  88. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Height" Storyboard.TargetName="rectangle">
  89. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value="8"/>
  90. </DoubleAnimationUsingKeyFrames>
  91. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.RadiusX)" Storyboard.TargetName="rectangle">
  92. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value="4"/>
  93. </DoubleAnimationUsingKeyFrames>
  94. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.RadiusY)" Storyboard.TargetName="rectangle">
  95. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value="4"/>
  96. </DoubleAnimationUsingKeyFrames>
  97. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.Y)" Storyboard.TargetName="rectangle">
  98. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value="0"/>
  99. </DoubleAnimationUsingKeyFrames>
  100. </Storyboard>
  101. <Storyboard x:Key="StoryboardMouseLeave">
  102. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Height" Storyboard.TargetName="rectangle">
  103. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="2"/>
  104. </DoubleAnimationUsingKeyFrames>
  105. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.RadiusX)" Storyboard.TargetName="rectangle">
  106. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="1"/>
  107. </DoubleAnimationUsingKeyFrames>
  108. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.RadiusY)" Storyboard.TargetName="rectangle">
  109. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="1"/>
  110. </DoubleAnimationUsingKeyFrames>
  111. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.Y)" Storyboard.TargetName="rectangle">
  112. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="-2"/>
  113. </DoubleAnimationUsingKeyFrames>
  114. </Storyboard>
  115. </ControlTemplate.Resources>
  116. <Border Height="{TemplateBinding Height}" Background="Transparent">
  117. <Rectangle x:Name="rectangle" RadiusX="1" RadiusY="1" VerticalAlignment="Bottom" Height="2" SnapsToDevicePixels="True" Width="{TemplateBinding Width}" Fill="{TemplateBinding Background}">
  118. <Rectangle.RenderTransform>
  119. <TransformGroup>
  120. <TranslateTransform Y="-2"/>
  121. </TransformGroup>
  122. </Rectangle.RenderTransform>
  123. </Rectangle>
  124. </Border>
  125. <ControlTemplate.Triggers>
  126. <Trigger Property="IsMouseOver" Value="true">
  127. <Setter Property="Fill" TargetName="rectangle" Value="{DynamicResource SecondaryTextBrush}"/>
  128. </Trigger>
  129. <Trigger Property="IsDragging" Value="true">
  130. <Setter Property="Fill" TargetName="rectangle" Value="{DynamicResource PrimaryTextBrush}"/>
  131. </Trigger>
  132. <EventTrigger RoutedEvent="MouseEnter">
  133. <BeginStoryboard Storyboard="{StaticResource StoryboardMouseEnter}"/>
  134. </EventTrigger>
  135. <EventTrigger RoutedEvent="MouseLeave">
  136. <BeginStoryboard Storyboard="{StaticResource StoryboardMouseLeave}"/>
  137. </EventTrigger>
  138. </ControlTemplate.Triggers>
  139. </ControlTemplate>
  140. </Setter.Value>
  141. </Setter>
  142. </Style>
  143. <Style x:Key="ScrollBarBaseStyle" TargetType="ScrollBar">
  144. <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/>
  145. <Setter Property="Stylus.IsFlicksEnabled" Value="false"/>
  146. <Setter Property="Foreground" Value="{DynamicResource PrimaryTextBrush}"/>
  147. <Setter Property="Background" Value="Transparent"/>
  148. <Setter Property="Focusable" Value="False"/>
  149. <Setter Property="BorderThickness" Value="0"/>
  150. <Setter Property="Width" Value="8"/>
  151. <Setter Property="MinWidth" Value="8"/>
  152. <Setter Property="Template">
  153. <Setter.Value>
  154. <ControlTemplate TargetType="ScrollBar">
  155. <hc:SimplePanel x:Name="Bg" SnapsToDevicePixels="true">
  156. <Border Background="{TemplateBinding Background}" />
  157. <Track x:Name="PART_Track" IsDirectionReversed="true" IsEnabled="{TemplateBinding IsMouseOver}">
  158. <Track.DecreaseRepeatButton>
  159. <RepeatButton Command="{x:Static ScrollBar.PageUpCommand}" Style="{StaticResource ScrollBarBaseRepeatButton}"/>
  160. </Track.DecreaseRepeatButton>
  161. <Track.IncreaseRepeatButton>
  162. <RepeatButton Command="{x:Static ScrollBar.PageDownCommand}" Style="{StaticResource ScrollBarBaseRepeatButton}"/>
  163. </Track.IncreaseRepeatButton>
  164. <Track.Thumb>
  165. <Thumb Background="{TemplateBinding Foreground}" Style="{StaticResource ScrollBarBaseThumbVertical}"/>
  166. </Track.Thumb>
  167. </Track>
  168. </hc:SimplePanel>
  169. </ControlTemplate>
  170. </Setter.Value>
  171. </Setter>
  172. <Style.Triggers>
  173. <Trigger Property="Orientation" Value="Horizontal">
  174. <Setter Property="Width" Value="Auto"/>
  175. <Setter Property="MinWidth" Value="0"/>
  176. <Setter Property="Height" Value="8"/>
  177. <Setter Property="MinHeight" Value="8"/>
  178. <Setter Property="BorderThickness" Value="0,1"/>
  179. <Setter Property="Template">
  180. <Setter.Value>
  181. <ControlTemplate TargetType="ScrollBar">
  182. <hc:SimplePanel x:Name="Bg" SnapsToDevicePixels="true">
  183. <Border Background="{TemplateBinding Background}" />
  184. <Track x:Name="PART_Track" IsEnabled="{TemplateBinding IsMouseOver}">
  185. <Track.DecreaseRepeatButton>
  186. <RepeatButton Command="{x:Static ScrollBar.PageLeftCommand}" Style="{StaticResource ScrollBarBaseRepeatButton}"/>
  187. </Track.DecreaseRepeatButton>
  188. <Track.IncreaseRepeatButton>
  189. <RepeatButton Command="{x:Static ScrollBar.PageRightCommand}" Style="{StaticResource ScrollBarBaseRepeatButton}"/>
  190. </Track.IncreaseRepeatButton>
  191. <Track.Thumb>
  192. <Thumb Background="{TemplateBinding Foreground}" Style="{StaticResource ScrollBarBaseThumbHorizontal}"/>
  193. </Track.Thumb>
  194. </Track>
  195. </hc:SimplePanel>
  196. </ControlTemplate>
  197. </Setter.Value>
  198. </Setter>
  199. </Trigger>
  200. </Style.Triggers>
  201. </Style>
  202. <ControlTemplate x:Key="ScrollViewerNativeBaseControlTemplate" TargetType="ScrollViewer">
  203. <ControlTemplate.Resources>
  204. <Storyboard x:Key="StoryboardMouseOver">
  205. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_VerticalScrollBar">
  206. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value=".8"/>
  207. </DoubleAnimationUsingKeyFrames>
  208. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_HorizontalScrollBar">
  209. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value=".8"/>
  210. </DoubleAnimationUsingKeyFrames>
  211. </Storyboard>
  212. <Storyboard x:Key="StoryboardCommon">
  213. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_VerticalScrollBar">
  214. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value=".3"/>
  215. </DoubleAnimationUsingKeyFrames>
  216. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_HorizontalScrollBar">
  217. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value=".3"/>
  218. </DoubleAnimationUsingKeyFrames>
  219. </Storyboard>
  220. </ControlTemplate.Resources>
  221. <Grid x:Name="Grid" Background="{TemplateBinding Background}">
  222. <Grid.ColumnDefinitions>
  223. <ColumnDefinition Width="*"/>
  224. <ColumnDefinition Width="Auto"/>
  225. </Grid.ColumnDefinitions>
  226. <Grid.RowDefinitions>
  227. <RowDefinition Height="*"/>
  228. <RowDefinition Height="Auto"/>
  229. </Grid.RowDefinitions>
  230. <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" Grid.RowSpan="2" Grid.ColumnSpan="2" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0"/>
  231. <ScrollBar x:Name="PART_VerticalScrollBar" Opacity=".3" Style="{StaticResource ScrollBarBaseStyle}" 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}"/>
  232. <ScrollBar x:Name="PART_HorizontalScrollBar" Opacity=".3" Style="{StaticResource ScrollBarBaseStyle}" 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}"/>
  233. </Grid>
  234. <ControlTemplate.Triggers>
  235. <Trigger Property="IsMouseOver" Value="True">
  236. <Trigger.EnterActions>
  237. <BeginStoryboard Storyboard="{StaticResource StoryboardMouseOver}"/>
  238. </Trigger.EnterActions>
  239. <Trigger.ExitActions>
  240. <BeginStoryboard Storyboard="{StaticResource StoryboardCommon}"/>
  241. </Trigger.ExitActions>
  242. </Trigger>
  243. </ControlTemplate.Triggers>
  244. </ControlTemplate>
  245. <ControlTemplate x:Key="ScrollViewerNativeAutoHideBaseControlTemplate" TargetType="ScrollViewer">
  246. <ControlTemplate.Resources>
  247. <Storyboard x:Key="StoryboardMouseOver">
  248. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_VerticalScrollBar">
  249. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value=".8"/>
  250. </DoubleAnimationUsingKeyFrames>
  251. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_HorizontalScrollBar">
  252. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value=".8"/>
  253. </DoubleAnimationUsingKeyFrames>
  254. </Storyboard>
  255. <Storyboard x:Key="StoryboardCommon">
  256. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_VerticalScrollBar">
  257. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="0"/>
  258. </DoubleAnimationUsingKeyFrames>
  259. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_HorizontalScrollBar">
  260. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="0"/>
  261. </DoubleAnimationUsingKeyFrames>
  262. </Storyboard>
  263. </ControlTemplate.Resources>
  264. <Grid x:Name="Grid" Background="{TemplateBinding Background}">
  265. <Grid.ColumnDefinitions>
  266. <ColumnDefinition Width="*"/>
  267. <ColumnDefinition Width="Auto"/>
  268. </Grid.ColumnDefinitions>
  269. <Grid.RowDefinitions>
  270. <RowDefinition Height="*"/>
  271. <RowDefinition Height="Auto"/>
  272. </Grid.RowDefinitions>
  273. <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" Grid.RowSpan="2" Grid.ColumnSpan="2" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0"/>
  274. <ScrollBar x:Name="PART_VerticalScrollBar" Opacity="0" Style="{StaticResource ScrollBarBaseStyle}" 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}"/>
  275. <ScrollBar x:Name="PART_HorizontalScrollBar" Opacity="0" Style="{StaticResource ScrollBarBaseStyle}" 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}"/>
  276. </Grid>
  277. <ControlTemplate.Triggers>
  278. <Trigger Property="IsMouseOver" Value="True">
  279. <Trigger.EnterActions>
  280. <BeginStoryboard Storyboard="{StaticResource StoryboardMouseOver}"/>
  281. </Trigger.EnterActions>
  282. <Trigger.ExitActions>
  283. <BeginStoryboard Storyboard="{StaticResource StoryboardCommon}"/>
  284. </Trigger.ExitActions>
  285. </Trigger>
  286. </ControlTemplate.Triggers>
  287. </ControlTemplate>
  288. <Style x:Key="ScrollViewerNativeBaseStyle" TargetType="ScrollViewer">
  289. <Setter Property="VerticalScrollBarVisibility" Value="{Binding Path=(hc:ScrollViewer.VerticalScrollBarVisibility),RelativeSource={RelativeSource TemplatedParent}}"/>
  290. <Setter Property="Focusable" Value="False"/>
  291. <Setter Property="Template" Value="{StaticResource ScrollViewerNativeAutoHideBaseControlTemplate}"/>
  292. <Style.Triggers>
  293. <Trigger Property="hc:ScrollViewerAttach.AutoHide" Value="False">
  294. <Setter Property="Template" Value="{StaticResource ScrollViewerNativeBaseControlTemplate}"/>
  295. </Trigger>
  296. </Style.Triggers>
  297. </Style>
  298. <ControlTemplate x:Key="ScrollViewerBaseControlTemplate" TargetType="hc:ScrollViewer">
  299. <ControlTemplate.Resources>
  300. <Storyboard x:Key="StoryboardMouseOver">
  301. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_VerticalScrollBar">
  302. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value=".8"/>
  303. </DoubleAnimationUsingKeyFrames>
  304. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_HorizontalScrollBar">
  305. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value=".8"/>
  306. </DoubleAnimationUsingKeyFrames>
  307. </Storyboard>
  308. <Storyboard x:Key="StoryboardCommon">
  309. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_VerticalScrollBar">
  310. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value=".3"/>
  311. </DoubleAnimationUsingKeyFrames>
  312. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_HorizontalScrollBar">
  313. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value=".3"/>
  314. </DoubleAnimationUsingKeyFrames>
  315. </Storyboard>
  316. </ControlTemplate.Resources>
  317. <Grid x:Name="Grid" Background="{TemplateBinding Background}">
  318. <Grid.ColumnDefinitions>
  319. <ColumnDefinition Width="*"/>
  320. <ColumnDefinition Width="Auto"/>
  321. </Grid.ColumnDefinitions>
  322. <Grid.RowDefinitions>
  323. <RowDefinition Height="*"/>
  324. <RowDefinition Height="Auto"/>
  325. </Grid.RowDefinitions>
  326. <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" Grid.RowSpan="2" Grid.ColumnSpan="2" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0"/>
  327. <ScrollBar x:Name="PART_VerticalScrollBar" Style="{StaticResource ScrollBarBaseStyle}" 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}"/>
  328. <ScrollBar x:Name="PART_HorizontalScrollBar" Style="{StaticResource ScrollBarBaseStyle}" 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}"/>
  329. </Grid>
  330. <ControlTemplate.Triggers>
  331. <Trigger Property="IsMouseOver" Value="True">
  332. <Trigger.EnterActions>
  333. <BeginStoryboard Storyboard="{StaticResource StoryboardMouseOver}"/>
  334. </Trigger.EnterActions>
  335. <Trigger.ExitActions>
  336. <BeginStoryboard Storyboard="{StaticResource StoryboardCommon}"/>
  337. </Trigger.ExitActions>
  338. </Trigger>
  339. </ControlTemplate.Triggers>
  340. </ControlTemplate>
  341. <ControlTemplate x:Key="ScrollViewerAutoHideBaseControlTemplate" TargetType="hc:ScrollViewer">
  342. <ControlTemplate.Resources>
  343. <Storyboard x:Key="StoryboardMouseOver">
  344. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_VerticalScrollBar">
  345. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value=".8"/>
  346. </DoubleAnimationUsingKeyFrames>
  347. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_HorizontalScrollBar">
  348. <EasingDoubleKeyFrame KeyTime="0:0:.1" Value=".8"/>
  349. </DoubleAnimationUsingKeyFrames>
  350. </Storyboard>
  351. <Storyboard x:Key="StoryboardCommon">
  352. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_VerticalScrollBar">
  353. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="0"/>
  354. </DoubleAnimationUsingKeyFrames>
  355. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_HorizontalScrollBar">
  356. <EasingDoubleKeyFrame KeyTime="0:0:.2" Value="0"/>
  357. </DoubleAnimationUsingKeyFrames>
  358. </Storyboard>
  359. </ControlTemplate.Resources>
  360. <Grid x:Name="Grid" Background="{TemplateBinding Background}">
  361. <Grid.ColumnDefinitions>
  362. <ColumnDefinition Width="*"/>
  363. <ColumnDefinition Width="Auto"/>
  364. </Grid.ColumnDefinitions>
  365. <Grid.RowDefinitions>
  366. <RowDefinition Height="*"/>
  367. <RowDefinition Height="Auto"/>
  368. </Grid.RowDefinitions>
  369. <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" Grid.RowSpan="2" Grid.ColumnSpan="2" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0"/>
  370. <ScrollBar x:Name="PART_VerticalScrollBar" Opacity="0" Style="{StaticResource ScrollBarBaseStyle}" 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}"/>
  371. <ScrollBar x:Name="PART_HorizontalScrollBar" Opacity="0" Style="{StaticResource ScrollBarBaseStyle}" 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}"/>
  372. </Grid>
  373. <ControlTemplate.Triggers>
  374. <Trigger Property="IsMouseOver" Value="True">
  375. <Trigger.EnterActions>
  376. <BeginStoryboard Storyboard="{StaticResource StoryboardMouseOver}"/>
  377. </Trigger.EnterActions>
  378. <Trigger.ExitActions>
  379. <BeginStoryboard Storyboard="{StaticResource StoryboardCommon}"/>
  380. </Trigger.ExitActions>
  381. </Trigger>
  382. </ControlTemplate.Triggers>
  383. </ControlTemplate>
  384. <Style x:Key="ScrollViewerBaseStyle" TargetType="hc:ScrollViewer">
  385. <Setter Property="VerticalScrollBarVisibility" Value="{Binding Path=(hc:ScrollViewer.VerticalScrollBarVisibility),RelativeSource={RelativeSource TemplatedParent}}" />
  386. <Setter Property="Focusable" Value="False"/>
  387. <Setter Property="Template" Value="{StaticResource ScrollViewerAutoHideBaseControlTemplate}"/>
  388. <Style.Triggers>
  389. <Trigger Property="hc:ScrollViewerAttach.AutoHide" Value="False">
  390. <Setter Property="Template" Value="{StaticResource ScrollViewerBaseControlTemplate}"/>
  391. </Trigger>
  392. </Style.Triggers>
  393. </Style>
  394. </ResourceDictionary>