ControlTemplate in WPF —— DataGrid
- <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
- <BooleanToVisibilityConverter x:Key="bool2VisibilityConverter" />
- <!--Style and template for the button in the upper left corner of the DataGrid.-->
- <Style TargetType="{x:Type Button}"
- x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle,
- TypeInTargetAssembly={x:Type DataGrid}}">
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type Button}">
- <Grid>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal" />
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
- Storyboard.TargetProperty="(Shape.Fill).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMouseOverColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
- Storyboard.TargetProperty="(Shape.Fill).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlPressedColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)"
- Storyboard.TargetName="Arrow">
- <DiscreteObjectKeyFrame KeyTime=""
- Value="{x:Static Visibility.Collapsed}" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Rectangle x:Name="Border"
- SnapsToDevicePixels="True">
- <Rectangle.Stroke>
- <LinearGradientBrush EndPoint="0.5,1"
- StartPoint="0.5,0">
- <GradientStop Color="{DynamicResource BorderLightColor}"
- Offset="" />
- <GradientStop Color="{DynamicResource BorderMediumColor}"
- Offset="" />
- </LinearGradientBrush>
- </Rectangle.Stroke>
- <Rectangle.Fill>
- <LinearGradientBrush EndPoint="0.5,1"
- StartPoint="0.5,0">
- <GradientStop Color="{DynamicResource ControlLightColor}"
- Offset="" />
- <GradientStop Color="{DynamicResource ControlMediumColor}"
- Offset="" />
- </LinearGradientBrush>
- </Rectangle.Fill>
- </Rectangle>
- <Polygon x:Name="Arrow"
- HorizontalAlignment="Right"
- Margin="8,8,3,3"
- Opacity="0.15"
- Points="0,10 10,10 10,0"
- Stretch="Uniform"
- VerticalAlignment="Bottom">
- <Polygon.Fill>
- <SolidColorBrush Color="{DynamicResource GlyphColor}" />
- </Polygon.Fill>
- </Polygon>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <!--Style and template for the DataGrid.-->
- <Style TargetType="{x:Type DataGrid}">
- <Setter Property="Foreground"
- Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
- <Setter Property="BorderBrush">
- <Setter.Value>
- <LinearGradientBrush EndPoint="0.5,1"
- StartPoint="0.5,0">
- <GradientStop Color="{DynamicResource BorderLightColor}"
- Offset="" />
- <GradientStop Color="{DynamicResource BorderDarkColor}"
- Offset="" />
- </LinearGradientBrush>
- </Setter.Value>
- </Setter>
- <Setter Property="BorderThickness"
- Value="" />
- <Setter Property="RowDetailsVisibilityMode"
- Value="VisibleWhenSelected" />
- <Setter Property="ScrollViewer.CanContentScroll"
- Value="true" />
- <Setter Property="ScrollViewer.PanningMode"
- Value="Both" />
- <Setter Property="Stylus.IsFlicksEnabled"
- Value="False" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type DataGrid}">
- <Border x:Name="border"
- SnapsToDevicePixels="True"
- BorderBrush="{TemplateBinding BorderBrush}"
- BorderThickness="{TemplateBinding BorderThickness}"
- Padding="{TemplateBinding Padding}">
- <Border.Background>
- <SolidColorBrush Color="{DynamicResource ControlLightColor}" />
- </Border.Background>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="border"
- Storyboard.TargetProperty="(Panel.Background).
- (SolidColorBrush.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{DynamicResource ControlLightColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Normal" />
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <ScrollViewer x:Name="DG_ScrollViewer"
- Focusable="false"
- Background="Black">
- <ScrollViewer.Template>
- <ControlTemplate TargetType="{x:Type ScrollViewer}">
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="*" />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition Height="*" />
- <RowDefinition Height="Auto" />
- </Grid.RowDefinitions>
- <Button Focusable="false"
- Command="{x:Static DataGrid.SelectAllCommand}"
- Style="{DynamicResource {ComponentResourceKey
- ResourceId=DataGridSelectAllButtonStyle,
- TypeInTargetAssembly={x:Type DataGrid}}}"
- Visibility="{Binding HeadersVisibility,
- ConverterParameter={x:Static DataGridHeadersVisibility.All},
- Converter={x:Static DataGrid.HeadersVisibilityConverter},
- RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
- Width="{Binding CellsPanelHorizontalOffset,
- RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
- <DataGridColumnHeadersPresenter x:Name="PART_ColumnHeadersPresenter"
- Grid.Column=""
- Visibility="{Binding HeadersVisibility,
- ConverterParameter={x:Static DataGridHeadersVisibility.Column},
- Converter={x:Static DataGrid.HeadersVisibilityConverter},
- RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
- <ScrollContentPresenter x:Name="PART_ScrollContentPresenter"
- Grid.ColumnSpan=""
- Grid.Row=""
- CanContentScroll="{TemplateBinding CanContentScroll}" />
- <ScrollBar x:Name="PART_VerticalScrollBar"
- Grid.Column=""
- Grid.Row=""
- Orientation="Vertical"
- ViewportSize="{TemplateBinding ViewportHeight}"
- Maximum="{TemplateBinding ScrollableHeight}"
- Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
- Value="{Binding VerticalOffset, Mode=OneWay,
- RelativeSource={RelativeSource TemplatedParent}}"/>
- <Grid Grid.Column=""
- Grid.Row="">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="{Binding NonFrozenColumnsViewportHorizontalOffset,
- RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
- <ColumnDefinition Width="*" />
- </Grid.ColumnDefinitions>
- <ScrollBar x:Name="PART_HorizontalScrollBar"
- Grid.Column=""
- Orientation="Horizontal"
- ViewportSize="{TemplateBinding ViewportWidth}"
- Maximum="{TemplateBinding ScrollableWidth}"
- Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
- Value="{Binding HorizontalOffset, Mode=OneWay,
- RelativeSource={RelativeSource TemplatedParent}}"/>
- </Grid>
- </Grid>
- </ControlTemplate>
- </ScrollViewer.Template>
- <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
- </ScrollViewer>
- </Border>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- <Style.Triggers>
- <Trigger Property="IsGrouping"
- Value="true">
- <Setter Property="ScrollViewer.CanContentScroll"
- Value="false" />
- </Trigger>
- </Style.Triggers>
- </Style>
- <!--Style and template for the DataGridCell.-->
- <Style TargetType="{x:Type DataGridCell}">
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type DataGridCell}">
- <Border x:Name="border"
- BorderBrush="Transparent"
- BorderThickness=""
- Background="Transparent"
- SnapsToDevicePixels="True">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="FocusStates">
- <VisualState x:Name="Unfocused" />
- <VisualState x:Name="Focused" />
- </VisualStateGroup>
- <VisualStateGroup x:Name="CurrentStates">
- <VisualState x:Name="Regular" />
- <VisualState x:Name="Current">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="border"
- Storyboard.TargetProperty="(Border.BorderBrush).
- (SolidColorBrush.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource DatagridCurrentCellBorderColor}" />
- </ColorAnimationUsingKeyFrames
- >
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
- </Border>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <!--Style and template for the DataGridRow.-->
- <Style TargetType="{x:Type DataGridRow}">
- <Setter Property="Background">
- <Setter.Value>
- <SolidColorBrush Color="{DynamicResource ControlLightColor}" />
- </Setter.Value>
- </Setter>
- <Setter Property="SnapsToDevicePixels"
- Value="true" />
- <Setter Property="Validation.ErrorTemplate"
- Value="{x:Null}" />
- <Setter Property="ValidationErrorTemplate">
- <Setter.Value>
- <ControlTemplate>
- <TextBlock Foreground="Red"
- Margin="2,0,0,0"
- Text="!"
- VerticalAlignment="Center" />
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type DataGridRow}">
- <Border x:Name="DGR_Border"
- BorderBrush="{TemplateBinding BorderBrush}"
- BorderThickness="{TemplateBinding BorderThickness}"
- SnapsToDevicePixels="True">
- <Border.Background>
- <LinearGradientBrush EndPoint="0.5,1"
- StartPoint="0.5,0">
- <GradientStop Color="Transparent"
- Offset="" />
- <GradientStop Color="{DynamicResource ControlLightColor}"
- Offset="" />
- </LinearGradientBrush>
- </Border.Background>
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal" />
- <!--Provide a different appearance for every other row.-->
- <VisualState x:Name="Normal_AlternatingRow">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ContentAreaColorLight}" />
- </ColorAnimationUsingKeyFrames>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ContentAreaColorDark}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <!--In this example, a row in Editing or selected mode has an
- identical appearances. In other words, the states
- Normal_Selected, Unfocused_Selected, Normal_Editing,
- MouseOver_Editing, MouseOver_Unfocused_Editing,
- and Unfocused_Editing are identical.-->
- <VisualState x:Name="Normal_Selected">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMediumColor}" />
- </ColorAnimationUsingKeyFrames>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlDarkColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Unfocused_Selected">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMediumColor}" />
- </ColorAnimationUsingKeyFrames>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlDarkColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Normal_Editing">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMediumColor}" />
- </ColorAnimationUsingKeyFrames>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlDarkColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="MouseOver_Editing">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMediumColor}" />
- </ColorAnimationUsingKeyFrames>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlDarkColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="MouseOver_Unfocused_Editing">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMediumColor}" />
- </ColorAnimationUsingKeyFrames>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlDarkColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Unfocused_Editing">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMediumColor}" />
- </ColorAnimationUsingKeyFrames>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlDarkColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMediumColor}" />
- </ColorAnimationUsingKeyFrames>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMouseOverColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <!--In this example, the appearance of a selected row
- that has the mouse over it is the same regardless of
- whether the row is selected. In other words, the states
- MouseOver_Editing and MouseOver_Unfocused_Editing are identical.-->
- <VisualState x:Name="MouseOver_Selected">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMouseOverColor}" />
- </ColorAnimationUsingKeyFrames>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMouseOverColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="MouseOver_Unfocused_Selected">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMouseOverColor}" />
- </ColorAnimationUsingKeyFrames>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMouseOverColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <SelectiveScrollingGrid>
- <SelectiveScrollingGrid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="*" />
- </SelectiveScrollingGrid.ColumnDefinitions>
- <SelectiveScrollingGrid.RowDefinitions>
- <RowDefinition Height="*" />
- <RowDefinition Height="Auto" />
- </SelectiveScrollingGrid.RowDefinitions>
- <DataGridCellsPresenter Grid.Column=""
- ItemsPanel="{TemplateBinding ItemsPanel}"
- SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
- <DataGridDetailsPresenter Grid.Column=""
- Grid.Row=""
- Visibility="{TemplateBinding DetailsVisibility}"
- SelectiveScrollingGrid.SelectiveScrollingOrientation=
- "{Binding AreRowDetailsFrozen,
- ConverterParameter={x:Static SelectiveScrollingOrientation.Vertical},
- Converter={x:Static DataGrid.RowDetailsScrollingConverter},
- RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
- <DataGridRowHeader Grid.RowSpan=""
- SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical"
- Visibility="{Binding HeadersVisibility,
- ConverterParameter={x:Static DataGridHeadersVisibility.Row},
- Converter={x:Static DataGrid.HeadersVisibilityConverter},
- RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
- </SelectiveScrollingGrid>
- </Border>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <!--Style and template for the resize control on the DataGridRowHeader.-->
- <Style x:Key="RowHeaderGripperStyle"
- TargetType="{x:Type Thumb}">
- <Setter Property="Height"
- Value="" />
- <Setter Property="Background"
- Value="Transparent" />
- <Setter Property="Cursor"
- Value="SizeNS" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type Thumb}">
- <Border Background="{TemplateBinding Background}"
- Padding="{TemplateBinding Padding}" />
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <!--Style and template for the DataGridRowHeader.-->
- <Style TargetType="{x:Type DataGridRowHeader}">
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type DataGridRowHeader}">
- <Grid>
- <VisualStateManager.VisualStateGroups>
- <!--This example does not specify an appearance for every
- state. You can add storyboard to the states that are listed
- to change the appearance of the DataGridRowHeader when it is
- in a specific state.-->
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal" />
- <VisualState x:Name="Normal_CurrentRow" />
- <VisualState x:Name="Unfocused_EditingRow" />
- <VisualState x:Name="Normal_EditingRow" />
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ColorAnimationUsingKeyFrames Storyboard.TargetName="rowHeaderBorder"
- Storyboard.TargetProperty="(Panel.Background).
- (GradientBrush.GradientStops)[].(GradientStop.Color)">
- <EasingColorKeyFrame KeyTime=""
- Value="{StaticResource ControlMouseOverColor}" />
- </ColorAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="MouseOver_CurrentRow" />
- <VisualState x:Name="MouseOver_Unfocused_EditingRow" />
- <VisualState x:Name="MouseOver_EditingRow" />
- <VisualState x:Name="MouseOver_Unfocused_Selected" />
- <VisualState x:Name="MouseOver_Selected" />
- <VisualState x:Name="MouseOver_Unfocused_CurrentRow_Selected" />
- <VisualState x:Name="MouseOver_CurrentRow_Selected" />
- <VisualState x:Name="Unfocused_Selected" />
- <VisualState x:Name="Unfocused_CurrentRow_Selected" />
- <VisualState x:Name="Normal_CurrentRow_Selected" />
- <VisualState x:Name="Normal_Selected" />
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="rowHeaderBorder"
- Width=""
- BorderThickness="">
- <Border.BorderBrush>
- <LinearGradientBrush EndPoint="0.5,1"
- StartPoint="0.5,0">
- <GradientStop Color="{DynamicResource BorderLightColor}"
- Offset="" />
- <GradientStop Color="{DynamicResource BorderDarkColor}"
- Offset="" />
- </LinearGradientBrush>
- </Border.BorderBrush>
- <Border.Background>
- <LinearGradientBrush EndPoint="0.5,1"
- StartPoint="0.5,0">
- <GradientStop Color="{DynamicResource ControlLightColor}"
- Offset="" />
- <GradientStop Color="{DynamicResource ControlMediumColor}"
- Offset="" />
- </LinearGradientBrush>
- </Border.Background>
- <StackPanel Orientation="Horizontal">
- <ContentPresenter VerticalAlignment="Center"
- SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
- <Control SnapsToDevicePixels="false"
- Template="{Binding ValidationErrorTemplate,
- RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}"
- Visibility="{Binding (Validation.HasError),
- Converter={StaticResource bool2VisibilityConverter},
- RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" />
- </StackPanel>
- </Border>
- <Thumb x:Name="PART_TopHeaderGripper"
- Style="{StaticResource RowHeaderGripperStyle}"
- VerticalAlignment="Top" />
- <Thumb x:Name="PART_BottomHeaderGripper"
- Style="{StaticResource RowHeaderGripperStyle}"
- VerticalAlignment="Bottom" />
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <!--Style and template for the resize control on the DataGridColumnHeader.-->
- <Style x:Key="ColumnHeaderGripperStyle"
- TargetType="{x:Type Thumb}">
- <Setter Property="Width"
- Value="" />
- <Setter Property="Background"
- Value="Transparent" />
- <Setter Property="Cursor"
- Value="SizeWE" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type Thumb}">
- <Border Background="{TemplateBinding Background}"
- Padding="{TemplateBinding Padding}" />
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <!--Style and template for the DataGridColumnHeader.-->
- <Style TargetType="{x:Type DataGridColumnHeader}">
- <Setter Property="VerticalContentAlignment"
- Value="Center" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
- <Grid>
- <Border x:Name="columnHeaderBorder"
- BorderThickness=""
- Padding="3,0,3,0">
- <Border.BorderBrush>
- <LinearGradientBrush EndPoint="0.5,1"
- StartPoint="0.5,0">
- <GradientStop Color="{DynamicResource BorderLightColor}"
- Offset="" />
- <GradientStop Color="{DynamicResource BorderDarkColor}"
- Offset="" />
- </LinearGradientBrush>
- </Border.BorderBrush>
- <Border.Background>
- <LinearGradientBrush EndPoint="0.5,1"
- StartPoint="0.5,0">
- <GradientStop Color="{DynamicResource ControlLightColor}"
- Offset="" />
- <GradientStop Color="{DynamicResource ControlMediumColor}"
- Offset="" />
- </LinearGradientBrush>
- </Border.Background>
- <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
- SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
- VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
- </Border>
- <Thumb x:Name="PART_LeftHeaderGripper"
- HorizontalAlignment="Left"
- Style="{StaticResource ColumnHeaderGripperStyle}" />
- <Thumb x:Name="PART_RightHeaderGripper"
- HorizontalAlignment="Right"
- Style="{StaticResource ColumnHeaderGripperStyle}" />
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- <Setter Property="Background">
- <Setter.Value>
- <LinearGradientBrush EndPoint="0.5,1"
- StartPoint="0.5,0">
- <GradientStop Color="{DynamicResource ControlLightColor}"
- Offset="" />
- <GradientStop Color="{DynamicResource ControlMediumColor}"
- Offset="" />
- </LinearGradientBrush>
- </Setter.Value>
- </Setter>
- </Style>
- <!--Style and template for the DataGridColumnHeadersPresenter.-->
- <Style TargetType="{x:Type DataGridColumnHeadersPresenter}">
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
- <Grid>
- <DataGridColumnHeader x:Name="PART_FillerColumnHeader"
- IsHitTestVisible="False" />
- <ItemsPresenter />
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </ResourceDictionary>
ControlTemplate in WPF —— DataGrid的更多相关文章
- WPF DataGrid常用属性记录
WPF DataGrid常用属性记录 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭 ...
- xceed wpf datagrid
<!--*********************************************************************************** Extended ...
- WPF DataGrid自定义样式
微软的WPF DataGrid中有很多的属性和样式,你可以调整,以寻找合适的(如果你是一名设计师).下面,找到我的小抄造型的网格.它不是100%全面,但它可以让你走得很远,有一些非常有用的技巧和陷阱. ...
- WPF DataGrid Custommization using Style and Template
WPF DataGrid Custommization using Style and Template 代码下载:http://download.csdn.net/detail/wujicai/81 ...
- WPF DataGrid 样式设置
隔行换色,鼠标单击,悬浮样式都有,其具体效果如图 1 所示. 图 1 WPF DataGrid 样式设置效果图 其中: 界面设计代码下所示 ? + 查看代码 1 2 3 4 5 6 7 8 9 10 ...
- C# WPF DataGrid 分组(Group)
原文:C# WPF DataGrid 分组(Group) 效果如图,每个列的名字可以自定义.我随便用了”File”和”Attachment Name”. 在Window的Resources里面设置S ...
- WPF DataGrid 样式分享
原文:WPF DataGrid 样式分享 隔行换色,鼠标单击,悬浮样式都有 先看效果: 代码: <DataGrid AutoGenerateColumns="False" N ...
- C# WPF DataGrid 隔行变色及内容居中对齐
C# WPF DataGrid 隔行变色及内容居中对齐. dqzww NET学习0 先看效果: 前台XAML代码: <!--引入样式文件--> <Window.Resourc ...
- WPF Datagrid 控制 第一行和第一列之间的空白
原文:WPF Datagrid 控制 第一行和第一列之间的空白 这个位置就是 这里 我们更改 DataGridControltemplate 模板 看树形结构 里面是一个BUtton 功能是全选 能找 ...
随机推荐
- (九)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 ...
- Python 3 中字符串和 bytes 的区别
在Python中字符串和unicode真是傻傻分不清楚,在没搞懂两个区别时,你会发现程序报的错怎么改都是再报错,让你烦躁. 学习Python的时候,又重温了这部分内容,写了这个学习笔记. Python ...
- angular流程引擎集成
工作流在oa和erp中十分常见,现有成熟的工作流通常是在客户端实现的,web实现工作流的案例十分稀少.要实现web工作流必须要有强大的流程设计器,这里为大家介绍一款基于angular的流程控件,其功能 ...
- ribbon负载均衡循环策略源码
(原) 在用ribbon负载均衡取eureka注册中心中的地址时,默认采用循环策略,例如商品服务有3个,分别为URL1,URL2,URL3,那么在客户端第一次取时,会取到URL1,第二次取时取到URL ...
- TCP的ACK原理和延迟确认机制
某天晚上睡觉前突然想到 tcp的ACK确认是单独发的还是和报文一起发的,下面看一下别人的解答 一.ACK定义TCP协议中,接收方成功接收到数据后,会回复一个ACK数据包,表示已经确认接收到ACK确认号 ...
- Python-multiprocessing-Pool模块
from multiprocessing import Pool import os import time import random def long_time_task(name): print ...
- [Algorithm] Convert a number from decimal to binary
125, how to conver to binary number? function DecimalToDinary (n) { let temp = n; let list = []; if ...
- linux运维、架构之路-K8s数据管理
一.Volume介绍 容器和Pod是短暂的,它们的生命周期可能很短,会被频繁的销毁和创建,存在容器中的数据会被清除,为了持久化保存容器的数据,k8s提供了Volume.Volume的生命周期独立于容器 ...
- [Android]第一个cm调试分析
0x00:写在前面 一直想入门Android安全,当时是极客大挑战出题的时候,被cx表哥甩锅强行去学了点android的开发,之后慢慢接触,感觉还是挺有意思的.cx表哥说先从逆向分析入门吧,之后可以 ...
- HDU 5727 Necklace ( 2016多校、二分图匹配 )
题目链接 题意 : 给出 2*N 颗珠子.有 N 颗是阴的.有 N 颗是阳的.现在要把阴阳珠子串成一个环状的项链.而且要求珠子的放置方式必须的阴阳相间的.然后给出你 M 个限制关系.格式为 ( A.B ...