2016-10-10 6 views
1

Telerik DataGridの列のテキストボックスのテキストの色を変更する際に問題が発生しました。Telerik Data Columnフォアグラウンドカラーコンバータが動作しない

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を持っています。テクスチャボックスのプロパティは正常に動作しますが、フォアグラウンドは正しく設定されていません。Textプロパティをバインドしました。 RobotはINotifyPropertyを実装しており、セッターでは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プロパティで使用しようとしました - それは期待どおりに働いた。

完全に明白なものがありませんか?

EDIT:

System.Windows.Data情報::10:コンバータは、私は、出力ウィンドウでこれを取得していますヒットした後に結合し、有効な代替値が存在しないを使用して値を取得できません。代わりにデフォルトを使用します。 BindingExpression:パス=成功; DataItem = 'RobotManagerLite'(HashCode = 21433709);ターゲット要素は 'TextBox'(Name = '')です。ターゲットプロパティが 'Foreground'(タイプ 'Brush')です。

答えて

1

System.Drawing.Brushesの代わりにSystem.Windows.Media.Brushesを使用するだけの愚かな問題でした。 FML

関連する問題