数値のみを入力できるようにしたいテキスト ボックスのカスタム スタイルがあります。
これを確認するためにカスタム 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>
入力が正しく検証されたときに境界線を緑色に表示するにはどうすればよいですか?