1: <UserControl x:Class="ConditionalCellFormatting.MainPage"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5: xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView"
6: xmlns:gridview="clr-namespace:Telerik.Windows.Controls.GridView;assembly=Telerik.Windows.Controls.GridView"
7: xmlns:local="clr-namespace:ConditionalCellFormatting"
8: mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
9: <UserControl.Resources>
10: <local:PriceToColorConverter x:Key="MyConverter" />
11:
12: <SolidColorBrush x:Key="GridLinesFill" Color="#FFB3B3B3"/>
13: <SolidColorBrush x:Key="GridViewRowNormalBackground" Color="#FFFFFFFF"/>
14: <LinearGradientBrush x:Key="GridViewRowSelectedBackground" EndPoint="0.5,1" StartPoint="0.5,0">
15: <GradientStop Color="#FFFFCA5D" Offset="1"/>
16: <GradientStop Color="#FFFFDC9C" Offset="0"/>
17: </LinearGradientBrush>
18: <SolidColorBrush x:Key="GridViewDisabledBackground" Color="#FFEEEEEE"/>
19: <SolidColorBrush x:Key="GridViewDisabledBorderBrush" Color="#FFBBBBBB"/>
20: <SolidColorBrush x:Key="GridViewDisabledForeground" Color="#FF6F6F6F"/>
21: <ControlTemplate x:Key="GridViewCellTemplate" TargetType="gridview:GridViewCell">
22: <Grid x:Name="SelectionBackground" Background="{Binding Price, Converter={StaticResource MyConverter}}">
23: <VisualStateManager.VisualStateGroups>
24: <VisualStateGroup x:Name="CommonStates">
25: <VisualState x:Name="Normal"/>
26: </VisualStateGroup>
27: <VisualStateGroup x:Name="EditingStates">
28: <VisualState x:Name="Edited">
29: <Storyboard>
30: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_EditorPresenter" Storyboard.TargetProperty="Visibility">
31: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
32: </ObjectAnimationUsingKeyFrames>
33: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_ContentPresenter" Storyboard.TargetProperty="Visibility">
34: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Collapsed"/>
35: </ObjectAnimationUsingKeyFrames>
36: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="GridViewCellBorder" Storyboard.TargetProperty="Background">
37: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource GridViewRowNormalBackground}"/>
38: </ObjectAnimationUsingKeyFrames>
39: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CurrentBorder" Storyboard.TargetProperty="Visibility">
40: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
41: </ObjectAnimationUsingKeyFrames>
42: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CurrentBorder" Storyboard.TargetProperty="Stroke">
43: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource GridViewRowSelectedBackground}"/>
44: </ObjectAnimationUsingKeyFrames>
45: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CurrentBorder" Storyboard.TargetProperty="StrokeThickness">
46: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="2"/>
47: </ObjectAnimationUsingKeyFrames>
48: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CurrentBorder" Storyboard.TargetProperty="StrokeDashArray">
49: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="0"/>
50: </ObjectAnimationUsingKeyFrames>
51: </Storyboard>
52: </VisualState>
53: <VisualState x:Name="Display">
54: <Storyboard>
55: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_ContentPresenter" Storyboard.TargetProperty="Visibility">
56: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
57: </ObjectAnimationUsingKeyFrames>
58: </Storyboard>
59: </VisualState>
60: <VisualState x:Name="Current">
61: <Storyboard>
62: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_EditorPresenter" Storyboard.TargetProperty="Visibility">
63: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Collapsed"/>
64: </ObjectAnimationUsingKeyFrames>
65: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_ContentPresenter" Storyboard.TargetProperty="Visibility">
66: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
67: </ObjectAnimationUsingKeyFrames>
68: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CurrentBorder" Storyboard.TargetProperty="Visibility">
69: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
70: </ObjectAnimationUsingKeyFrames>
71: </Storyboard>
72: </VisualState>
73: </VisualStateGroup>
74: <VisualStateGroup x:Name="ValueStates">
75: <VisualState x:Name="Valid">
76: <Storyboard>
77: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="InvalidBorder" Storyboard.TargetProperty="Visibility">
78: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Collapsed"/>
79: </ObjectAnimationUsingKeyFrames>
80: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ErrorIcon" Storyboard.TargetProperty="Visibility">
81: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Collapsed"/>
82: </ObjectAnimationUsingKeyFrames>
83: </Storyboard>
84: </VisualState>
85: <VisualState x:Name="Invalid">
86: <Storyboard>
87: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="InvalidBorder" Storyboard.TargetProperty="Visibility">
88: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
89: </ObjectAnimationUsingKeyFrames>
90: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ErrorIcon" Storyboard.TargetProperty="Visibility">
91: <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
92: </ObjectAnimationUsingKeyFrames>
93: </Storyboard>
94: </VisualState>
95: </VisualStateGroup>
96: <VisualStateGroup x:Name="DisabledStates">
97: <VisualState x:Name="Enabled"/>
98: <VisualState x:Name="Disabled">
99: <Storyboard>
100: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectionBackground" Storyboard.TargetProperty="Background">
101: <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GridViewDisabledBackground}"/>
102: </ObjectAnimationUsingKeyFrames>
103: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_HorizontalGridLine" Storyboard.TargetProperty="Fill">
104: <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GridViewDisabledBorderBrush}"/>
105: </ObjectAnimationUsingKeyFrames>
106: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_VerticalGridLine" Storyboard.TargetProperty="Fill">
107: <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GridViewDisabledBorderBrush}"/>
108: </ObjectAnimationUsingKeyFrames>
109: <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_ContentPresenter" Storyboard.TargetProperty="Foreground">
110: <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GridViewDisabledForeground}"/>
111: </ObjectAnimationUsingKeyFrames>
112: </Storyboard>
113: </VisualState>
114: </VisualStateGroup>
115: </VisualStateManager.VisualStateGroups>
116: <Border x:Name="GridViewCellBorder" UseLayoutRounding="True" Background="Transparent" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"/>
117: <gridview:AlignmentContentPresenter x:Name="PART_ContentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Visibility="Visible" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Foreground="{TemplateBinding Foreground}" TextAlignment="{TemplateBinding TextAlignment}" TextDecorations="{TemplateBinding TextDecorations}" TextWrapping="{TemplateBinding TextWrapping}"/>
118: <ContentPresenter x:Name="PART_EditorPresenter" HorizontalAlignment="Stretch" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Visibility="Collapsed"/>
119: <Rectangle x:Name="PART_HorizontalGridLine" Fill="{StaticResource GridLinesFill}" Height="1" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"/>
120: <Rectangle x:Name="PART_VerticalGridLine" Fill="{StaticResource GridLinesFill}" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="1"/>
121: <Rectangle x:Name="CurrentBorder" Stroke="#FF000000" StrokeDashArray="1.5" StrokeDashCap="Round" StrokeDashOffset="0" StrokeThickness="1" Height="Auto" Margin="0" Width="Auto" Visibility="Collapsed"/>
122: <Rectangle x:Name="InvalidBorder" Stroke="#FFDB000C" StrokeThickness="2" Height="Auto" Margin="0" Width="Auto" Visibility="Collapsed"/>
123: <Grid x:Name="ErrorIcon" Height="18" HorizontalAlignment="Right" Margin="2,0,2,0" VerticalAlignment="Center" Width="18" Visibility="Collapsed">
124: <Ellipse Fill="#FF535353"/>
125: <Ellipse Fill="#FFCE3527" Stroke="#FFFFFFFF" Margin="1,1,1,1"/>
126: <Path Stretch="Fill" Margin="0.999,1,1.001,8.134" Data="M16,8 C8.127,4.9999293 6.627,10.999763 0,8 0,3.581722 3.581722,0 8,0 12.418278,0 16,3.581722 16,8 z">
127: <Path.Fill>
128: <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
129: <GradientStop Color="#99FFFFFF" Offset="0"/>
130: <GradientStop Color="#33FFFFFF" Offset="1"/>
131: </LinearGradientBrush>
132: </Path.Fill>
133: </Path>
134: <Path Stretch="Fill" Stroke="#FF000000" StrokeThickness="2" Margin="5.168,5.748,4.832,4.252" Data="M0.50001547,0.5 L6.5000797,6.5000169 M6.5000155,0.5 L0.5,6.5000704"/>
135: <Path Fill="#FFCE3527" Stretch="Fill" Stroke="#FFFFFFFF" StrokeThickness="2" Margin="5.085,5.084,4.915,4.916" Data="M0.50001547,0.5 L6.5000797,6.5000169 M6.5000155,0.5 L0.5,6.5000704"/>
136: </Grid>
137: </Grid>
138: </ControlTemplate>
139: <Style x:Key="GridViewCellStyle" TargetType="gridview:GridViewCell">
140: <Setter Property="Template" Value="{StaticResource GridViewCellTemplate}"/>
141: <Setter Property="Padding" Value="3,0,3,0"/>
142: <Setter Property="BorderBrush" Value="{StaticResource GridViewRowSelectedBackground}"/>
143: <Setter Property="VerticalContentAlignment" Value="Center"/>
144: <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
145: <Setter Property="Background" Value="Transparent"/>
146: <Setter Property="UseLayoutRounding" Value="True"/>
147: </Style>
148: </UserControl.Resources>
149: <Grid x:Name="LayoutRoot">
150: <telerik:RadGridView x:Name="RadGridView1" AutoGenerateColumns="False" >
151: <telerik:RadGridView.Columns>
152: <telerik:GridViewDataColumn DataMemberBinding="{Binding ProductName}" Header="Product" />
153: <telerik:GridViewDataColumn CellStyle="{StaticResource GridViewCellStyle}" DataMemberBinding="{Binding Price}" Header="Price"/>
154: </telerik:RadGridView.Columns>
155: </telerik:RadGridView>
156: </Grid>
157: </UserControl>