0

プログラムによって値が変更されたときに検証をトリガーしますか?

データグリッドがあり、「ステータス」列があります。ユーザーがボタンをクリックすると、データグリッド行のデータに基づいて長い処理を行うバックグラウンド ワーカーが開始されます: 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>
4

1 に答える 1

2

これを設定ValidatesOnTargetUpdatedするValidationRuleと、ターゲット プロパティが更新されるたびに検証が行われます。

例:

<local:StatusValidationRule ValidatesOnTargetUpdated="True" />
于 2013-03-29T03:11:01.310 に答える