我遇到问题更改Telerik DataGrid中的列中的文本框的文本颜色。Telerik数据列前景颜色转换器不工作
XAML:
<telerik:RadGridView x:Name="RobotsGrid" AutoGenerateColumns="False" CanUserFreezeColumns="False" ItemsSource="{Binding Robots}" ShowGroupPanel="False" ShowInsertRow="False" RowIndicatorVisibility="Collapsed" CanUserDeleteRows="False" telerik:StyleManager.Theme="Office_Blue" SelectionMode="Extended" CellEditEnded="RobotsGrid_CellEditEnded" EnableColumnVirtualization="False" Filtered="WorkItemsGrid_Filtered" SelectionChanged="RobotsGrid_SelectionChanged" EnableRowVirtualization="True" IsBusy="{Binding Path=RobotsRefreshing, Mode=OneWay}">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Width="200" Header="Status" IsReadOnly="True">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Status}" Foreground="{Binding Path=Success, Converter={StaticResource BoolToColorConverter} }" IsReadOnly="True" IsTabStop="False" PreviewKeyDown="SelectKeyDown" PreviewMouseDown="SelectParentRow" TextWrapping="Wrap" Tag="{Binding}" BorderThickness="0" Margin="5,0"/>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:RadGridView.Columns>
</telerik:RadGridView>
网格绑定到ObservableCollection<Robots>
,每个机器人具有string Status
和bool Success
。我已经绑定了可以正常工作的Texbox的Text
属性,但是Foreground没有正确设置。 Robot
实现了INotifyProperty的更改,并在setter中调用OnPropertyChanged()
。
我对Foreground
进行了硬编码,并按预期工作,看起来好像转换器没有按预期工作。
这里的转换器:
public class BoolToColorConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
if (value != null) {
var success = System.Convert.ToBoolean(value);
if (success)
return Brushes.Green;
else
return Brushes.Red;
}
return Brushes.Blue;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
return Brushes.Black;
}
}
我没有得到任何错误,我已经通过代码和转换器阶梯被击中,则返回Brushes.Green
如预期,但我仍然没有看到前景实际上在改变。我曾尝试使用转换器来返回一个字符串,并在Text
属性上使用它 - 它按预期工作。
我错过了一些完全明显的东西吗?
编辑:后转换器打我得到这个在输出窗口:
System.Windows.Data信息:10:使用绑定和没有有效的回退值存在无法检索值;改为使用默认值。 BindingExpression:路径=成功; DataItem ='RobotManagerLite'(HashCode = 21433709);目标元素是'TextBox'(Name ='');目标属性是“前景”(类型“刷”)