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 Status
とbool 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')です。