0

数値のみを入力できるようにしたいテキスト ボックスのカスタム スタイルがあります。

これを確認するためにカスタム ValidationRule を作成しました。

入力が有効な場合は緑の境界線を表示し、そうでない場合は赤い境界線を表示します。エラーがある場合は赤い枠が正しく表示されますが、入力が正しい場合は緑が正しく表示されず、テキストボックスのデフォルトが表示されるだけです。

カスタム ValidationRule の ValidateResult メソッドは次のとおりです。

 public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {            
        string input = (value ?? String.Empty).ToString();
        double val;
        if (double.TryParse(input, out val))
        {
            return new ValidationResult(true, OkMessage);
        }
        else return new ValidationResult(false, ErrorMessage);
    }

スタイルとトリガーが定義されています。

<Style TargetType="{x:Type TextBox}">
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="Validation.ErrorTemplate">
                    <Setter.Value>
                        <ControlTemplate>                                
                                <Border BorderBrush="Red" BorderThickness="1"/>
                            </DockPanel>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Trigger>
            <Trigger Property="Validation.HasError" Value="False">
                <Setter Property="Validation.ErrorTemplate">
                    <Setter.Value>
                        <ControlTemplate>                                
                                <Border BorderBrush="Green" BorderThickness="1"/>
                            </DockPanel>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>

入力が正しく検証されたときに境界線を緑色に表示するにはどうすればよいですか?

4

2 に答える 2

4

これはValidation.HasError、エラーがないときにクリアさfalseれ、トリガーが必要とするように設定されていないためだと思います。テンプレートに緑色の境界線を含めてみませんか? HasError トリガーはそれを赤に変更しますが、それ以外の場合は常に緑にする必要があるため、トリガーではなくインラインに配置するのが最善です。

于 2012-05-21T14:54:54.473 に答える
1

その理由は、エラーが発生したときに表示される ErrorTemplate を設定しているためです...

エラー テンプレートの色を緑に変更していますが、エラーがない場合、エラー テンプレートは表示されません...

于 2012-05-21T16:05:21.647 に答える