プログラムによって値が変更されたときに検証をトリガーしますか?
データグリッドがあり、「ステータス」列があります。ユーザーがボタンをクリックすると、データグリッド行のデータに基づいて長い処理を行うバックグラウンド ワーカーが開始されます: ObservableCollection である行のループ。行の場合、処理ステータスが報告され、「ステータス」列に (文字列として) 表示されます。「ステータス」には、次のようなテキストが含まれることがあります。
エラー: .... 警告: ...
ステータス テキストに基づいてステータス セルの背景を変更したい。つまり、エラーの場合は赤、警告の場合はグレーに変更したい...
検証を使用してこれを行うことはできますか? 以下にコーディングしました。ステータス テキストを手動で変更すると、希望どおりに動作します。local:StatusValidationRule は Error があるかどうかをチェックします。ただし、ステータステキストがプログラムによって変更され、検証がトリガーされないため、これは機能しません。
助言がありますか?ありがとう。
<DataGridTextColumn Header="Status" Width="200" CanUserResize="True">
<DataGridTextColumn.Binding>
<Binding Path="Status" ValidatesOnExceptions="True" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:StatusValidationRule ValidationStep="UpdatedValue"/>
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap">
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="Background"
Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>