This question is locked. New answers and comments are not allowed.
I have read most of threads dealing with trying to change the row color. I have also looked at the demo. I have the converter and selector setup in my code behind. The rules are working, and the selector is choosing the correct style when looping through the rules. However, I keep getting xaml markup errors when the view is being displayed. Can you tell me what's wrong? This seems so simple, yet I don't see a problem.
XAML:
Code Behind:
XAML:
<Grid.Resources> <Style x:Key="ScheduledCallWorkedStyle" TargetType="telerik:GridViewRow"> <Setter Property="Background" Value="BlanchedAlmond" /> </Style> <Style x:Key="ScheduledCallNotWorkedStyle" TargetType="telerik:GridViewRow"> <Setter Property="Background" Value="Green" /> </Style> <ViewModels:ScheduledCallWorkedConverter x:Key="ScheduledCallWorkedConverter" /> <ViewModels:ScheduledCallWorkedStyleSelector x:Key="ScheduledCallWorkedSelector" ConditionConverter="{StaticResource ScheduledCallWorkedConverter}"> <ViewModels:ScheduledCallWorkedStyleSelector.Rules> <ViewModels:ScheduledCallWorkedStyleRule Style="{StaticResource ScheduledCallWorkedStyle}" > <ViewModels:ScheduledCallWorkedStyleRule.Value> <sys:Boolean>True</sys:Boolean> </ViewModels:ScheduledCallWorkedStyleRule.Value> </ViewModels:ScheduledCallWorkedStyleRule> <ViewModels:ScheduledCallWorkedStyleRule Style="{StaticResource ScheduledCallNotWorkedStyle}" > <ViewModels:ScheduledCallWorkedStyleRule.Value> <sys:Boolean>False</sys:Boolean> </ViewModels:ScheduledCallWorkedStyleRule.Value> </ViewModels:ScheduledCallWorkedStyleRule> </ViewModels:ScheduledCallWorkedStyleSelector.Rules> </ViewModels:ScheduledCallWorkedStyleSelector></Grid.Resources><telerik:RadGridView Grid.Row="1" Name="uxScheduledCalls" ItemsSource="{Binding ElementName=uxCollectionNavigator, Path=CollectionView}" SelectedItem="{Binding ElementName=uxCollectionNavigator, Path=CollectionView}" RowDetailsStyleSelector="{StaticResource ScheduledCallWorkedSelector}" CanUserDeleteRows="False" cal:Message.Attach="[Event KeyUp] = [Action KeyUp($source, $eventArgs)]" > <telerik:RadContextMenu.ContextMenu> <telerik:RadContextMenu Name="uxScheduledCallsContextMenu"/> </telerik:RadContextMenu.ContextMenu></telerik:RadGridView>Code Behind:
public class ScheduledCallWorkedConverter : IValueConverter{ public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var sclep = value as ScheduledCallLogEntryProjection; if (sclep == null) return false; return (DateTime.Now - sclep.CallLogEntryLastModDttm).TotalHours <= 24; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return null; }}public class ScheduledCallWorkedStyleSelector : StyleSelector{ public override Style SelectStyle(object item, DependencyObject container) { var conditionValue = ConditionConverter.Convert(item, null, null, null); foreach (var rule in Rules) { if (Equals(rule.Value, conditionValue)) { return null; } } return null; } List<ScheduledCallWorkedStyleRule> _rules; public List<ScheduledCallWorkedStyleRule> Rules { get { return _rules ?? (_rules = new List<ScheduledCallWorkedStyleRule>()); } } public IValueConverter ConditionConverter { get; set; }}public class ScheduledCallWorkedStyleRule{ public bool Value { get; set; } public Style Style { get; set; }}