I've looked at several examples (see links below), my code compiles and runs fine, except that my page loads initially with no data, then goes blank after a few seconds. What's wrong? I know it's to do with my Style Selector, but I can't find any problem even after debugging the SelectStyle method.
C# Code for the Custom Style Selector
Method 1
- using a Custom Style Selector
Method 2
- using a Custom Style Selector as a Static Resource
Method 3
- using a data template and dynamically binding the background)
- this works, but there's ugly padding around the label
Any ideas why the style selector is causing the page to go blank? I've debugged and got no exceptions.
Reference links:
Method 1: http://csharping.com/binding/binding-the-background-color-of-a-radgridview-cell/
Method 2: http://blogs.telerik.com/blogs/posts/10-04-01/conditional_styles_and_templates_with_radgridview_for_silverlight_and_wpf.aspx
Method 3: http://www.telerik.com/community/forums/wpf/gridview/binding-background-of-a-cell.aspx
Cheers,
Lindsay
C# Code for the Custom Style Selector
using
System.Windows;
using
System.Windows.Media;
using
Telerik.Windows.Controls;
using
Telerik.Windows.Controls.GridView;
namespace
AzureDashboard.Class
{
public
class
PercentAttainmentStyleSelector : StyleSelector
{
public
override
Style SelectStyle(
object
item, DependencyObject container)
{
var style =
new
Style(
typeof
(GridViewRow));
var cell = (GridViewCell)container;
ChartDataContainer rowData = (ChartDataContainer)item;
if
(rowData.Decimal1 > (
decimal
)0.8)
{
style.Setters.Add(
new
Setter(GridViewCell.BackgroundProperty,
new
SolidColorBrush(Colors.Yellow)));
}
else
{
style.Setters.Add(
new
Setter(GridViewCell.BackgroundProperty,
new
SolidColorBrush(Colors.Red)));
}
return
style;
}
}
}
Method 1
- using a Custom Style Selector
<
telerik:GridViewDataColumn
Width
=
"100"
DataMemberBinding
=
"{Binding Decimal1}"
DataFormatString
=
"#0%"
IsGroupable
=
"False"
IsFilterable
=
"False"
>
<
telerik:GridViewDataColumn.Header
>
<
Grid
>
<
TextBlock
Text
=
"Cumulative YTD Attainment"
TextWrapping
=
"Wrap"
/>
</
Grid
>
</
telerik:GridViewDataColumn.Header
>
<
telerik:GridViewDataColumn.CellStyleSelector
>
<
local:PercentAttainmentStyleSelector
></
local:PercentAttainmentStyleSelector
>
</
telerik:GridViewDataColumn.CellStyleSelector
>
Method 2
- using a Custom Style Selector as a Static Resource
<
Grid
x:Name
=
"LayoutRoot"
HorizontalAlignment
=
"Left"
>
<
Grid.Resources
>
<
local:PercentAttainmentStyleSelector
x:Key
=
"MyPercentAttainmentStyleSelector"
/>
</
Grid.Resources
>
<
telerik:GridViewDataColumn
Width
=
"100"
DataMemberBinding
=
"{Binding Decimal1}"
CellStyleSelector
=
"{StaticResource MyPercentAttainmentStyleSelector}"
DataFormatString
=
"#0%"
IsGroupable
=
"False"
IsFilterable
=
"False"
>
<
telerik:GridViewDataColumn.Header
>
<
Grid
>
<
TextBlock
Text
=
"Cumulative YTD Attainment"
TextWrapping
=
"Wrap"
/>
</
Grid
>
</
telerik:GridViewDataColumn.Header
>
</
telerik:GridViewDataColumn
>
Method 3
- using a data template and dynamically binding the background)
- this works, but there's ugly padding around the label
<
telerik:GridViewDataColumn
Width
=
"100"
DataFormatString
=
"#0%"
IsGroupable
=
"False"
IsFilterable
=
"False"
>
<
telerik:GridViewDataColumn.Header
>
<
Grid
>
<
TextBlock
Text
=
"Cumulative YTD Attainment"
TextWrapping
=
"Wrap"
/>
</
Grid
>
</
telerik:GridViewDataColumn.Header
>
<
telerik:GridViewDataColumn.CellTemplate
>
<
DataTemplate
>
<
sdk:Label
Padding
=
"0"
Height
=
"30"
Width
=
"105"
Content
=
"{Binding Decimal1}"
Background
=
"{Binding BackgroundBrush}"
Margin
=
"0"
/>
</
DataTemplate
>
</
telerik:GridViewDataColumn.CellTemplate
>
Any ideas why the style selector is causing the page to go blank? I've debugged and got no exceptions.
Reference links:
Method 1: http://csharping.com/binding/binding-the-background-color-of-a-radgridview-cell/
Method 2: http://blogs.telerik.com/blogs/posts/10-04-01/conditional_styles_and_templates_with_radgridview_for_silverlight_and_wpf.aspx
Method 3: http://www.telerik.com/community/forums/wpf/gridview/binding-background-of-a-cell.aspx
Cheers,
Lindsay