2016-10-10 23 views
1

我遇到问题更改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 Statusbool 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 ='');目标属性是“前景”(类型“刷”)

回答

1

这是一个愚蠢的问题 - 只要一使用System.Windows.Media.Brushes代替System.Drawing.Brushes的问题。 FML