1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  3.  
  4. <BooleanToVisibilityConverter x:Key="bool2VisibilityConverter" />
  5.  
  6. <!--Style and template for the button in the upper left corner of the DataGrid.-->
  7. <Style TargetType="{x:Type Button}"
  8. x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle,
  9. TypeInTargetAssembly={x:Type DataGrid}}">
  10. <Setter Property="Template">
  11. <Setter.Value>
  12. <ControlTemplate TargetType="{x:Type Button}">
  13. <Grid>
  14. <VisualStateManager.VisualStateGroups>
  15. <VisualStateGroup x:Name="CommonStates">
  16. <VisualState x:Name="Normal" />
  17. <VisualState x:Name="MouseOver">
  18. <Storyboard>
  19. <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
  20. Storyboard.TargetProperty="(Shape.Fill).
  21. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  22. <EasingColorKeyFrame KeyTime=""
  23. Value="{StaticResource ControlMouseOverColor}" />
  24. </ColorAnimationUsingKeyFrames>
  25. </Storyboard>
  26. </VisualState>
  27. <VisualState x:Name="Pressed">
  28. <Storyboard>
  29. <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
  30. Storyboard.TargetProperty="(Shape.Fill).
  31. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  32. <EasingColorKeyFrame KeyTime=""
  33. Value="{StaticResource ControlPressedColor}" />
  34. </ColorAnimationUsingKeyFrames>
  35. </Storyboard>
  36. </VisualState>
  37. <VisualState x:Name="Disabled">
  38. <Storyboard>
  39. <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)"
  40. Storyboard.TargetName="Arrow">
  41. <DiscreteObjectKeyFrame KeyTime=""
  42. Value="{x:Static Visibility.Collapsed}" />
  43. </ObjectAnimationUsingKeyFrames>
  44. </Storyboard>
  45. </VisualState>
  46. </VisualStateGroup>
  47. </VisualStateManager.VisualStateGroups>
  48. <Rectangle x:Name="Border"
  49. SnapsToDevicePixels="True">
  50. <Rectangle.Stroke>
  51. <LinearGradientBrush EndPoint="0.5,1"
  52. StartPoint="0.5,0">
  53. <GradientStop Color="{DynamicResource BorderLightColor}"
  54. Offset="" />
  55. <GradientStop Color="{DynamicResource BorderMediumColor}"
  56. Offset="" />
  57. </LinearGradientBrush>
  58. </Rectangle.Stroke>
  59. <Rectangle.Fill>
  60. <LinearGradientBrush EndPoint="0.5,1"
  61. StartPoint="0.5,0">
  62. <GradientStop Color="{DynamicResource ControlLightColor}"
  63. Offset="" />
  64. <GradientStop Color="{DynamicResource ControlMediumColor}"
  65. Offset="" />
  66. </LinearGradientBrush>
  67. </Rectangle.Fill>
  68. </Rectangle>
  69. <Polygon x:Name="Arrow"
  70. HorizontalAlignment="Right"
  71. Margin="8,8,3,3"
  72. Opacity="0.15"
  73. Points="0,10 10,10 10,0"
  74. Stretch="Uniform"
  75. VerticalAlignment="Bottom">
  76. <Polygon.Fill>
  77. <SolidColorBrush Color="{DynamicResource GlyphColor}" />
  78. </Polygon.Fill>
  79. </Polygon>
  80. </Grid>
  81. </ControlTemplate>
  82. </Setter.Value>
  83. </Setter>
  84. </Style>
  85.  
  86. <!--Style and template for the DataGrid.-->
  87. <Style TargetType="{x:Type DataGrid}">
  88. <Setter Property="Foreground"
  89. Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
  90. <Setter Property="BorderBrush">
  91. <Setter.Value>
  92. <LinearGradientBrush EndPoint="0.5,1"
  93. StartPoint="0.5,0">
  94. <GradientStop Color="{DynamicResource BorderLightColor}"
  95. Offset="" />
  96. <GradientStop Color="{DynamicResource BorderDarkColor}"
  97. Offset="" />
  98. </LinearGradientBrush>
  99. </Setter.Value>
  100. </Setter>
  101. <Setter Property="BorderThickness"
  102. Value="" />
  103. <Setter Property="RowDetailsVisibilityMode"
  104. Value="VisibleWhenSelected" />
  105. <Setter Property="ScrollViewer.CanContentScroll"
  106. Value="true" />
  107. <Setter Property="ScrollViewer.PanningMode"
  108. Value="Both" />
  109. <Setter Property="Stylus.IsFlicksEnabled"
  110. Value="False" />
  111. <Setter Property="Template">
  112. <Setter.Value>
  113. <ControlTemplate TargetType="{x:Type DataGrid}">
  114. <Border x:Name="border"
  115. SnapsToDevicePixels="True"
  116. BorderBrush="{TemplateBinding BorderBrush}"
  117. BorderThickness="{TemplateBinding BorderThickness}"
  118. Padding="{TemplateBinding Padding}">
  119. <Border.Background>
  120. <SolidColorBrush Color="{DynamicResource ControlLightColor}" />
  121. </Border.Background>
  122. <VisualStateManager.VisualStateGroups>
  123. <VisualStateGroup x:Name="CommonStates">
  124. <VisualState x:Name="Disabled">
  125. <Storyboard>
  126. <ColorAnimationUsingKeyFrames Storyboard.TargetName="border"
  127. Storyboard.TargetProperty="(Panel.Background).
  128. (SolidColorBrush.Color)">
  129. <EasingColorKeyFrame KeyTime=""
  130. Value="{DynamicResource ControlLightColor}" />
  131. </ColorAnimationUsingKeyFrames>
  132. </Storyboard>
  133. </VisualState>
  134. <VisualState x:Name="Normal" />
  135. </VisualStateGroup>
  136. </VisualStateManager.VisualStateGroups>
  137. <ScrollViewer x:Name="DG_ScrollViewer"
  138. Focusable="false"
  139. Background="Black">
  140. <ScrollViewer.Template>
  141. <ControlTemplate TargetType="{x:Type ScrollViewer}">
  142. <Grid>
  143. <Grid.ColumnDefinitions>
  144. <ColumnDefinition Width="Auto" />
  145. <ColumnDefinition Width="*" />
  146. <ColumnDefinition Width="Auto" />
  147. </Grid.ColumnDefinitions>
  148. <Grid.RowDefinitions>
  149. <RowDefinition Height="Auto" />
  150. <RowDefinition Height="*" />
  151. <RowDefinition Height="Auto" />
  152. </Grid.RowDefinitions>
  153.  
  154. <Button Focusable="false"
  155. Command="{x:Static DataGrid.SelectAllCommand}"
  156. Style="{DynamicResource {ComponentResourceKey
  157. ResourceId=DataGridSelectAllButtonStyle,
  158. TypeInTargetAssembly={x:Type DataGrid}}}"
  159. Visibility="{Binding HeadersVisibility,
  160. ConverterParameter={x:Static DataGridHeadersVisibility.All},
  161. Converter={x:Static DataGrid.HeadersVisibilityConverter},
  162. RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
  163. Width="{Binding CellsPanelHorizontalOffset,
  164. RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
  165.  
  166. <DataGridColumnHeadersPresenter x:Name="PART_ColumnHeadersPresenter"
  167. Grid.Column=""
  168. Visibility="{Binding HeadersVisibility,
  169. ConverterParameter={x:Static DataGridHeadersVisibility.Column},
  170. Converter={x:Static DataGrid.HeadersVisibilityConverter},
  171. RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
  172.  
  173. <ScrollContentPresenter x:Name="PART_ScrollContentPresenter"
  174. Grid.ColumnSpan=""
  175. Grid.Row=""
  176. CanContentScroll="{TemplateBinding CanContentScroll}" />
  177.  
  178. <ScrollBar x:Name="PART_VerticalScrollBar"
  179. Grid.Column=""
  180. Grid.Row=""
  181. Orientation="Vertical"
  182. ViewportSize="{TemplateBinding ViewportHeight}"
  183. Maximum="{TemplateBinding ScrollableHeight}"
  184. Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
  185. Value="{Binding VerticalOffset, Mode=OneWay,
  186. RelativeSource={RelativeSource TemplatedParent}}"/>
  187.  
  188. <Grid Grid.Column=""
  189. Grid.Row="">
  190. <Grid.ColumnDefinitions>
  191. <ColumnDefinition Width="{Binding NonFrozenColumnsViewportHorizontalOffset,
  192. RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
  193. <ColumnDefinition Width="*" />
  194. </Grid.ColumnDefinitions>
  195.  
  196. <ScrollBar x:Name="PART_HorizontalScrollBar"
  197. Grid.Column=""
  198. Orientation="Horizontal"
  199. ViewportSize="{TemplateBinding ViewportWidth}"
  200. Maximum="{TemplateBinding ScrollableWidth}"
  201. Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
  202. Value="{Binding HorizontalOffset, Mode=OneWay,
  203. RelativeSource={RelativeSource TemplatedParent}}"/>
  204. </Grid>
  205. </Grid>
  206. </ControlTemplate>
  207. </ScrollViewer.Template>
  208. <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  209. </ScrollViewer>
  210. </Border>
  211. </ControlTemplate>
  212. </Setter.Value>
  213. </Setter>
  214. <Style.Triggers>
  215. <Trigger Property="IsGrouping"
  216. Value="true">
  217. <Setter Property="ScrollViewer.CanContentScroll"
  218. Value="false" />
  219. </Trigger>
  220. </Style.Triggers>
  221. </Style>
  222.  
  223. <!--Style and template for the DataGridCell.-->
  224. <Style TargetType="{x:Type DataGridCell}">
  225. <Setter Property="Template">
  226. <Setter.Value>
  227. <ControlTemplate TargetType="{x:Type DataGridCell}">
  228. <Border x:Name="border"
  229. BorderBrush="Transparent"
  230. BorderThickness=""
  231. Background="Transparent"
  232. SnapsToDevicePixels="True">
  233. <VisualStateManager.VisualStateGroups>
  234. <VisualStateGroup x:Name="FocusStates">
  235. <VisualState x:Name="Unfocused" />
  236. <VisualState x:Name="Focused" />
  237. </VisualStateGroup>
  238. <VisualStateGroup x:Name="CurrentStates">
  239. <VisualState x:Name="Regular" />
  240. <VisualState x:Name="Current">
  241. <Storyboard>
  242. <ColorAnimationUsingKeyFrames Storyboard.TargetName="border"
  243. Storyboard.TargetProperty="(Border.BorderBrush).
  244. (SolidColorBrush.Color)">
  245. <EasingColorKeyFrame KeyTime=""
  246. Value="{StaticResource DatagridCurrentCellBorderColor}" />
  247. </ColorAnimationUsingKeyFrames
  248. >
  249. </Storyboard>
  250. </VisualState>
  251. </VisualStateGroup>
  252. </VisualStateManager.VisualStateGroups>
  253. <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  254. </Border>
  255. </ControlTemplate>
  256. </Setter.Value>
  257. </Setter>
  258. </Style>
  259.  
  260. <!--Style and template for the DataGridRow.-->
  261. <Style TargetType="{x:Type DataGridRow}">
  262. <Setter Property="Background">
  263. <Setter.Value>
  264. <SolidColorBrush Color="{DynamicResource ControlLightColor}" />
  265. </Setter.Value>
  266. </Setter>
  267. <Setter Property="SnapsToDevicePixels"
  268. Value="true" />
  269. <Setter Property="Validation.ErrorTemplate"
  270. Value="{x:Null}" />
  271. <Setter Property="ValidationErrorTemplate">
  272. <Setter.Value>
  273. <ControlTemplate>
  274. <TextBlock Foreground="Red"
  275. Margin="2,0,0,0"
  276. Text="!"
  277. VerticalAlignment="Center" />
  278. </ControlTemplate>
  279. </Setter.Value>
  280. </Setter>
  281. <Setter Property="Template">
  282. <Setter.Value>
  283. <ControlTemplate TargetType="{x:Type DataGridRow}">
  284. <Border x:Name="DGR_Border"
  285. BorderBrush="{TemplateBinding BorderBrush}"
  286. BorderThickness="{TemplateBinding BorderThickness}"
  287. SnapsToDevicePixels="True">
  288. <Border.Background>
  289. <LinearGradientBrush EndPoint="0.5,1"
  290. StartPoint="0.5,0">
  291. <GradientStop Color="Transparent"
  292. Offset="" />
  293. <GradientStop Color="{DynamicResource ControlLightColor}"
  294. Offset="" />
  295. </LinearGradientBrush>
  296. </Border.Background>
  297. <VisualStateManager.VisualStateGroups>
  298. <VisualStateGroup x:Name="CommonStates">
  299. <VisualState x:Name="Normal" />
  300.  
  301. <!--Provide a different appearance for every other row.-->
  302. <VisualState x:Name="Normal_AlternatingRow">
  303. <Storyboard>
  304. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  305. Storyboard.TargetProperty="(Panel.Background).
  306. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  307. <EasingColorKeyFrame KeyTime=""
  308. Value="{StaticResource ContentAreaColorLight}" />
  309. </ColorAnimationUsingKeyFrames>
  310. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  311. Storyboard.TargetProperty="(Panel.Background).
  312. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  313.  
  314. <EasingColorKeyFrame KeyTime=""
  315. Value="{StaticResource ContentAreaColorDark}" />
  316. </ColorAnimationUsingKeyFrames>
  317. </Storyboard>
  318. </VisualState>
  319.  
  320. <!--In this example, a row in Editing or selected mode has an
  321. identical appearances. In other words, the states
  322. Normal_Selected, Unfocused_Selected, Normal_Editing,
  323. MouseOver_Editing, MouseOver_Unfocused_Editing,
  324. and Unfocused_Editing are identical.-->
  325. <VisualState x:Name="Normal_Selected">
  326. <Storyboard>
  327. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  328. Storyboard.TargetProperty="(Panel.Background).
  329. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  330. <EasingColorKeyFrame KeyTime=""
  331. Value="{StaticResource ControlMediumColor}" />
  332. </ColorAnimationUsingKeyFrames>
  333. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  334. Storyboard.TargetProperty="(Panel.Background).
  335. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  336. <EasingColorKeyFrame KeyTime=""
  337. Value="{StaticResource ControlDarkColor}" />
  338. </ColorAnimationUsingKeyFrames>
  339. </Storyboard>
  340. </VisualState>
  341.  
  342. <VisualState x:Name="Unfocused_Selected">
  343. <Storyboard>
  344. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  345. Storyboard.TargetProperty="(Panel.Background).
  346. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  347. <EasingColorKeyFrame KeyTime=""
  348. Value="{StaticResource ControlMediumColor}" />
  349. </ColorAnimationUsingKeyFrames>
  350. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  351. Storyboard.TargetProperty="(Panel.Background).
  352. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  353. <EasingColorKeyFrame KeyTime=""
  354. Value="{StaticResource ControlDarkColor}" />
  355. </ColorAnimationUsingKeyFrames>
  356. </Storyboard>
  357. </VisualState>
  358.  
  359. <VisualState x:Name="Normal_Editing">
  360. <Storyboard>
  361. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  362. Storyboard.TargetProperty="(Panel.Background).
  363. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  364. <EasingColorKeyFrame KeyTime=""
  365. Value="{StaticResource ControlMediumColor}" />
  366. </ColorAnimationUsingKeyFrames>
  367. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  368. Storyboard.TargetProperty="(Panel.Background).
  369. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  370. <EasingColorKeyFrame KeyTime=""
  371. Value="{StaticResource ControlDarkColor}" />
  372. </ColorAnimationUsingKeyFrames>
  373. </Storyboard>
  374. </VisualState>
  375.  
  376. <VisualState x:Name="MouseOver_Editing">
  377. <Storyboard>
  378. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  379. Storyboard.TargetProperty="(Panel.Background).
  380. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  381. <EasingColorKeyFrame KeyTime=""
  382. Value="{StaticResource ControlMediumColor}" />
  383. </ColorAnimationUsingKeyFrames>
  384. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  385. Storyboard.TargetProperty="(Panel.Background).
  386. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  387. <EasingColorKeyFrame KeyTime=""
  388. Value="{StaticResource ControlDarkColor}" />
  389. </ColorAnimationUsingKeyFrames>
  390. </Storyboard>
  391. </VisualState>
  392.  
  393. <VisualState x:Name="MouseOver_Unfocused_Editing">
  394. <Storyboard>
  395. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  396. Storyboard.TargetProperty="(Panel.Background).
  397. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  398. <EasingColorKeyFrame KeyTime=""
  399. Value="{StaticResource ControlMediumColor}" />
  400. </ColorAnimationUsingKeyFrames>
  401. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  402. Storyboard.TargetProperty="(Panel.Background).
  403. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  404. <EasingColorKeyFrame KeyTime=""
  405. Value="{StaticResource ControlDarkColor}" />
  406. </ColorAnimationUsingKeyFrames>
  407. </Storyboard>
  408. </VisualState>
  409.  
  410. <VisualState x:Name="Unfocused_Editing">
  411. <Storyboard>
  412. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  413. Storyboard.TargetProperty="(Panel.Background).
  414. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  415. <EasingColorKeyFrame KeyTime=""
  416. Value="{StaticResource ControlMediumColor}" />
  417. </ColorAnimationUsingKeyFrames>
  418. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  419. Storyboard.TargetProperty="(Panel.Background).
  420. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  421. <EasingColorKeyFrame KeyTime=""
  422. Value="{StaticResource ControlDarkColor}" />
  423. </ColorAnimationUsingKeyFrames>
  424. </Storyboard>
  425. </VisualState>
  426.  
  427. <VisualState x:Name="MouseOver">
  428. <Storyboard>
  429. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  430. Storyboard.TargetProperty="(Panel.Background).
  431. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  432. <EasingColorKeyFrame KeyTime=""
  433. Value="{StaticResource ControlMediumColor}" />
  434. </ColorAnimationUsingKeyFrames>
  435. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  436. Storyboard.TargetProperty="(Panel.Background).
  437. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  438. <EasingColorKeyFrame KeyTime=""
  439. Value="{StaticResource ControlMouseOverColor}" />
  440. </ColorAnimationUsingKeyFrames>
  441. </Storyboard>
  442. </VisualState>
  443.  
  444. <!--In this example, the appearance of a selected row
  445. that has the mouse over it is the same regardless of
  446. whether the row is selected. In other words, the states
  447. MouseOver_Editing and MouseOver_Unfocused_Editing are identical.-->
  448. <VisualState x:Name="MouseOver_Selected">
  449. <Storyboard>
  450. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  451. Storyboard.TargetProperty="(Panel.Background).
  452. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  453. <EasingColorKeyFrame KeyTime=""
  454. Value="{StaticResource ControlMouseOverColor}" />
  455. </ColorAnimationUsingKeyFrames>
  456. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  457. Storyboard.TargetProperty="(Panel.Background).
  458. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  459. <EasingColorKeyFrame KeyTime=""
  460. Value="{StaticResource ControlMouseOverColor}" />
  461. </ColorAnimationUsingKeyFrames>
  462. </Storyboard>
  463. </VisualState>
  464.  
  465. <VisualState x:Name="MouseOver_Unfocused_Selected">
  466. <Storyboard>
  467. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  468. Storyboard.TargetProperty="(Panel.Background).
  469. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  470. <EasingColorKeyFrame KeyTime=""
  471. Value="{StaticResource ControlMouseOverColor}" />
  472. </ColorAnimationUsingKeyFrames>
  473. <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
  474. Storyboard.TargetProperty="(Panel.Background).
  475. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  476. <EasingColorKeyFrame KeyTime=""
  477. Value="{StaticResource ControlMouseOverColor}" />
  478. </ColorAnimationUsingKeyFrames>
  479. </Storyboard>
  480. </VisualState>
  481. </VisualStateGroup>
  482. </VisualStateManager.VisualStateGroups>
  483.  
  484. <SelectiveScrollingGrid>
  485. <SelectiveScrollingGrid.ColumnDefinitions>
  486. <ColumnDefinition Width="Auto" />
  487. <ColumnDefinition Width="*" />
  488. </SelectiveScrollingGrid.ColumnDefinitions>
  489. <SelectiveScrollingGrid.RowDefinitions>
  490. <RowDefinition Height="*" />
  491. <RowDefinition Height="Auto" />
  492. </SelectiveScrollingGrid.RowDefinitions>
  493. <DataGridCellsPresenter Grid.Column=""
  494. ItemsPanel="{TemplateBinding ItemsPanel}"
  495. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  496. <DataGridDetailsPresenter Grid.Column=""
  497. Grid.Row=""
  498. Visibility="{TemplateBinding DetailsVisibility}"
  499. SelectiveScrollingGrid.SelectiveScrollingOrientation=
  500. "{Binding AreRowDetailsFrozen,
  501. ConverterParameter={x:Static SelectiveScrollingOrientation.Vertical},
  502. Converter={x:Static DataGrid.RowDetailsScrollingConverter},
  503. RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
  504. <DataGridRowHeader Grid.RowSpan=""
  505. SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical"
  506. Visibility="{Binding HeadersVisibility,
  507. ConverterParameter={x:Static DataGridHeadersVisibility.Row},
  508. Converter={x:Static DataGrid.HeadersVisibilityConverter},
  509. RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
  510. </SelectiveScrollingGrid>
  511. </Border>
  512. </ControlTemplate>
  513. </Setter.Value>
  514. </Setter>
  515. </Style>
  516.  
  517. <!--Style and template for the resize control on the DataGridRowHeader.-->
  518. <Style x:Key="RowHeaderGripperStyle"
  519. TargetType="{x:Type Thumb}">
  520. <Setter Property="Height"
  521. Value="" />
  522. <Setter Property="Background"
  523. Value="Transparent" />
  524. <Setter Property="Cursor"
  525. Value="SizeNS" />
  526. <Setter Property="Template">
  527. <Setter.Value>
  528. <ControlTemplate TargetType="{x:Type Thumb}">
  529. <Border Background="{TemplateBinding Background}"
  530. Padding="{TemplateBinding Padding}" />
  531. </ControlTemplate>
  532. </Setter.Value>
  533. </Setter>
  534. </Style>
  535.  
  536. <!--Style and template for the DataGridRowHeader.-->
  537. <Style TargetType="{x:Type DataGridRowHeader}">
  538. <Setter Property="Template">
  539. <Setter.Value>
  540. <ControlTemplate TargetType="{x:Type DataGridRowHeader}">
  541. <Grid>
  542. <VisualStateManager.VisualStateGroups>
  543. <!--This example does not specify an appearance for every
  544. state. You can add storyboard to the states that are listed
  545. to change the appearance of the DataGridRowHeader when it is
  546. in a specific state.-->
  547. <VisualStateGroup x:Name="CommonStates">
  548. <VisualState x:Name="Normal" />
  549. <VisualState x:Name="Normal_CurrentRow" />
  550. <VisualState x:Name="Unfocused_EditingRow" />
  551. <VisualState x:Name="Normal_EditingRow" />
  552. <VisualState x:Name="MouseOver">
  553. <Storyboard>
  554. <ColorAnimationUsingKeyFrames Storyboard.TargetName="rowHeaderBorder"
  555. Storyboard.TargetProperty="(Panel.Background).
  556. (GradientBrush.GradientStops)[].(GradientStop.Color)">
  557. <EasingColorKeyFrame KeyTime=""
  558. Value="{StaticResource ControlMouseOverColor}" />
  559. </ColorAnimationUsingKeyFrames>
  560. </Storyboard>
  561. </VisualState>
  562. <VisualState x:Name="MouseOver_CurrentRow" />
  563. <VisualState x:Name="MouseOver_Unfocused_EditingRow" />
  564. <VisualState x:Name="MouseOver_EditingRow" />
  565. <VisualState x:Name="MouseOver_Unfocused_Selected" />
  566. <VisualState x:Name="MouseOver_Selected" />
  567. <VisualState x:Name="MouseOver_Unfocused_CurrentRow_Selected" />
  568. <VisualState x:Name="MouseOver_CurrentRow_Selected" />
  569. <VisualState x:Name="Unfocused_Selected" />
  570. <VisualState x:Name="Unfocused_CurrentRow_Selected" />
  571. <VisualState x:Name="Normal_CurrentRow_Selected" />
  572. <VisualState x:Name="Normal_Selected" />
  573. </VisualStateGroup>
  574. </VisualStateManager.VisualStateGroups>
  575. <Border x:Name="rowHeaderBorder"
  576. Width=""
  577. BorderThickness="">
  578. <Border.BorderBrush>
  579. <LinearGradientBrush EndPoint="0.5,1"
  580. StartPoint="0.5,0">
  581. <GradientStop Color="{DynamicResource BorderLightColor}"
  582. Offset="" />
  583. <GradientStop Color="{DynamicResource BorderDarkColor}"
  584. Offset="" />
  585. </LinearGradientBrush>
  586. </Border.BorderBrush>
  587. <Border.Background>
  588. <LinearGradientBrush EndPoint="0.5,1"
  589. StartPoint="0.5,0">
  590. <GradientStop Color="{DynamicResource ControlLightColor}"
  591. Offset="" />
  592. <GradientStop Color="{DynamicResource ControlMediumColor}"
  593. Offset="" />
  594. </LinearGradientBrush>
  595. </Border.Background>
  596. <StackPanel Orientation="Horizontal">
  597. <ContentPresenter VerticalAlignment="Center"
  598. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
  599. <Control SnapsToDevicePixels="false"
  600. Template="{Binding ValidationErrorTemplate,
  601. RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}"
  602. Visibility="{Binding (Validation.HasError),
  603. Converter={StaticResource bool2VisibilityConverter},
  604. RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" />
  605. </StackPanel>
  606. </Border>
  607.  
  608. <Thumb x:Name="PART_TopHeaderGripper"
  609. Style="{StaticResource RowHeaderGripperStyle}"
  610. VerticalAlignment="Top" />
  611. <Thumb x:Name="PART_BottomHeaderGripper"
  612. Style="{StaticResource RowHeaderGripperStyle}"
  613. VerticalAlignment="Bottom" />
  614. </Grid>
  615. </ControlTemplate>
  616. </Setter.Value>
  617. </Setter>
  618. </Style>
  619.  
  620. <!--Style and template for the resize control on the DataGridColumnHeader.-->
  621. <Style x:Key="ColumnHeaderGripperStyle"
  622. TargetType="{x:Type Thumb}">
  623. <Setter Property="Width"
  624. Value="" />
  625. <Setter Property="Background"
  626. Value="Transparent" />
  627. <Setter Property="Cursor"
  628. Value="SizeWE" />
  629. <Setter Property="Template">
  630. <Setter.Value>
  631. <ControlTemplate TargetType="{x:Type Thumb}">
  632. <Border Background="{TemplateBinding Background}"
  633. Padding="{TemplateBinding Padding}" />
  634. </ControlTemplate>
  635. </Setter.Value>
  636. </Setter>
  637. </Style>
  638.  
  639. <!--Style and template for the DataGridColumnHeader.-->
  640. <Style TargetType="{x:Type DataGridColumnHeader}">
  641. <Setter Property="VerticalContentAlignment"
  642. Value="Center" />
  643. <Setter Property="Template">
  644. <Setter.Value>
  645. <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
  646. <Grid>
  647. <Border x:Name="columnHeaderBorder"
  648. BorderThickness=""
  649. Padding="3,0,3,0">
  650. <Border.BorderBrush>
  651. <LinearGradientBrush EndPoint="0.5,1"
  652. StartPoint="0.5,0">
  653. <GradientStop Color="{DynamicResource BorderLightColor}"
  654. Offset="" />
  655. <GradientStop Color="{DynamicResource BorderDarkColor}"
  656. Offset="" />
  657. </LinearGradientBrush>
  658. </Border.BorderBrush>
  659. <Border.Background>
  660. <LinearGradientBrush EndPoint="0.5,1"
  661. StartPoint="0.5,0">
  662. <GradientStop Color="{DynamicResource ControlLightColor}"
  663. Offset="" />
  664. <GradientStop Color="{DynamicResource ControlMediumColor}"
  665. Offset="" />
  666. </LinearGradientBrush>
  667. </Border.Background>
  668. <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  669. SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
  670. VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
  671. </Border>
  672.  
  673. <Thumb x:Name="PART_LeftHeaderGripper"
  674. HorizontalAlignment="Left"
  675. Style="{StaticResource ColumnHeaderGripperStyle}" />
  676. <Thumb x:Name="PART_RightHeaderGripper"
  677. HorizontalAlignment="Right"
  678. Style="{StaticResource ColumnHeaderGripperStyle}" />
  679. </Grid>
  680. </ControlTemplate>
  681. </Setter.Value>
  682. </Setter>
  683. <Setter Property="Background">
  684. <Setter.Value>
  685. <LinearGradientBrush EndPoint="0.5,1"
  686. StartPoint="0.5,0">
  687. <GradientStop Color="{DynamicResource ControlLightColor}"
  688. Offset="" />
  689. <GradientStop Color="{DynamicResource ControlMediumColor}"
  690. Offset="" />
  691. </LinearGradientBrush>
  692. </Setter.Value>
  693. </Setter>
  694. </Style>
  695.  
  696. <!--Style and template for the DataGridColumnHeadersPresenter.-->
  697. <Style TargetType="{x:Type DataGridColumnHeadersPresenter}">
  698. <Setter Property="Template">
  699. <Setter.Value>
  700. <ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
  701. <Grid>
  702. <DataGridColumnHeader x:Name="PART_FillerColumnHeader"
  703. IsHitTestVisible="False" />
  704. <ItemsPresenter />
  705. </Grid>
  706. </ControlTemplate>
  707. </Setter.Value>
  708. </Setter>
  709. </Style>
  710.  
  711. </ResourceDictionary>

ControlTemplate in WPF —— DataGrid的更多相关文章

  1. WPF DataGrid常用属性记录

    WPF DataGrid常用属性记录 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭 ...

  2. xceed wpf datagrid

    <!--*********************************************************************************** Extended ...

  3. WPF DataGrid自定义样式

    微软的WPF DataGrid中有很多的属性和样式,你可以调整,以寻找合适的(如果你是一名设计师).下面,找到我的小抄造型的网格.它不是100%全面,但它可以让你走得很远,有一些非常有用的技巧和陷阱. ...

  4. WPF DataGrid Custommization using Style and Template

    WPF DataGrid Custommization using Style and Template 代码下载:http://download.csdn.net/detail/wujicai/81 ...

  5. WPF DataGrid 样式设置

    隔行换色,鼠标单击,悬浮样式都有,其具体效果如图 1 所示. 图 1 WPF DataGrid 样式设置效果图 其中: 界面设计代码下所示 ? + 查看代码 1 2 3 4 5 6 7 8 9 10 ...

  6. C# WPF DataGrid 分组(Group)

    原文:C# WPF DataGrid 分组(Group) 效果如图,每个列的名字可以自定义.我随便用了”File”和”Attachment Name”.  在Window的Resources里面设置S ...

  7. WPF DataGrid 样式分享

    原文:WPF DataGrid 样式分享 隔行换色,鼠标单击,悬浮样式都有 先看效果: 代码: <DataGrid AutoGenerateColumns="False" N ...

  8. C# WPF DataGrid 隔行变色及内容居中对齐

    C# WPF DataGrid 隔行变色及内容居中对齐. dqzww NET学习0     先看效果: 前台XAML代码: <!--引入样式文件--> <Window.Resourc ...

  9. WPF Datagrid 控制 第一行和第一列之间的空白

    原文:WPF Datagrid 控制 第一行和第一列之间的空白 这个位置就是 这里 我们更改 DataGridControltemplate 模板 看树形结构 里面是一个BUtton 功能是全选 能找 ...

随机推荐

  1. (九)How to use the audio gadget driver

    Contents [hide]  1 Introduction 2 Audio Gadget Driver 1.0 2.1 Enabling the audio gadget driver 2.2 U ...

  2. Python 3 中字符串和 bytes 的区别

    在Python中字符串和unicode真是傻傻分不清楚,在没搞懂两个区别时,你会发现程序报的错怎么改都是再报错,让你烦躁. 学习Python的时候,又重温了这部分内容,写了这个学习笔记. Python ...

  3. angular流程引擎集成

    工作流在oa和erp中十分常见,现有成熟的工作流通常是在客户端实现的,web实现工作流的案例十分稀少.要实现web工作流必须要有强大的流程设计器,这里为大家介绍一款基于angular的流程控件,其功能 ...

  4. ribbon负载均衡循环策略源码

    (原) 在用ribbon负载均衡取eureka注册中心中的地址时,默认采用循环策略,例如商品服务有3个,分别为URL1,URL2,URL3,那么在客户端第一次取时,会取到URL1,第二次取时取到URL ...

  5. TCP的ACK原理和延迟确认机制

    某天晚上睡觉前突然想到 tcp的ACK确认是单独发的还是和报文一起发的,下面看一下别人的解答 一.ACK定义TCP协议中,接收方成功接收到数据后,会回复一个ACK数据包,表示已经确认接收到ACK确认号 ...

  6. Python-multiprocessing-Pool模块

    from multiprocessing import Pool import os import time import random def long_time_task(name): print ...

  7. [Algorithm] Convert a number from decimal to binary

    125, how to conver to binary number? function DecimalToDinary (n) { let temp = n; let list = []; if ...

  8. linux运维、架构之路-K8s数据管理

    一.Volume介绍 容器和Pod是短暂的,它们的生命周期可能很短,会被频繁的销毁和创建,存在容器中的数据会被清除,为了持久化保存容器的数据,k8s提供了Volume.Volume的生命周期独立于容器 ...

  9. [Android]第一个cm调试分析

    0x00:写在前面  一直想入门Android安全,当时是极客大挑战出题的时候,被cx表哥甩锅强行去学了点android的开发,之后慢慢接触,感觉还是挺有意思的.cx表哥说先从逆向分析入门吧,之后可以 ...

  10. HDU 5727 Necklace ( 2016多校、二分图匹配 )

    题目链接 题意 : 给出 2*N 颗珠子.有 N 颗是阴的.有 N 颗是阳的.现在要把阴阳珠子串成一个环状的项链.而且要求珠子的放置方式必须的阴阳相间的.然后给出你 M 个限制关系.格式为 ( A.B ...