I have problem to get AlternateRowStyleSelector working as expected.
Here is xaml:
<UserControl .....>
<UserControl.Resources>
<ContentControl x:Key="vm" Content="{Binding}"/>
<converters:MissingIconVisibilityConverter x:Key="MissingIconVisibilityConverter" />
<converters:MissingStyleSelector x:Key="MissingStyleSelector" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot">
<telerik:RadGridView ItemsSource="{Binding Path=MyObjectList}" AlternateRowStyleSelector="{StaticResource MissingStyleSelector}"
CanUserFreezeColumns="False" AutoGenerateColumns="False" AutoExpandGroups="True" CanUserDeleteRows="False"
CanUserInsertRows="False" RowIndicatorVisibility="Collapsed" ShowGroupPanel="False" CanUserSortColumns="False">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Width="26" IsResizable="False" IsReadOnly="True">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Image Width="18" Height="18" Visibility="{Binding Path=IsMissing, Converter={StaticResource MissingIconVisibilityConverter}}" Source="/Commons.Styles;component/Images/Alter.png"/>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="DAY/HR" IsReadOnly="True" DataMemberBinding="{Binding Path=ForecastedDate, Converter={StaticResource DayHourConverter}}" Width="*" Background="{Binding Path=IsMissing}" />
<telerik:GridViewDataColumn Header="Action" Width="42" IsResizable="False" IsReadOnly="True">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Button prism:Click.Command="{Binding Source={StaticResource vm}, Path=Content.RemoveCommand}" prism:Click.CommandParameter="{Binding Path=GUID}" Template="{StaticResource RemoveXButtonTemplate}" Cursor="Hand" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewDataColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</Grid>
</UserControl>
Then below is code:
public class MissingStyleSelector : StyleSelector
{
public override Style SelectStyle(object item, DependencyObject container)
{
var style = new Style(typeof(GridViewRow));
var row = (GridViewRow)container;
var obj = (MyObject)item;
if (obj.IsMissing == true)
{
style.Setters.Add(new Setter(GridViewRow.BackgroundProperty, new SolidColorBrush(Colors.Red)));
}
else
{
style.Setters.Add(new Setter(GridViewRow.BackgroundProperty, new SolidColorBrush(Colors.Transparent)));
}
return style;
}
}
I can build and run my solution, but the expected stuff is not working. please kindly advise.