特定のコントロール (このシナリオでは TextBox) の検証規則を作成しようとしています。
ValidationRule と DepedencyProperty を利用する適切な手順を実行しましたが、オブジェクトのプロパティへの正常な Binding を取得できません。
以下のコードを見つけてください。補足として、カスタム Validation クラスの「Is Required」は、XAML で明示的に値を設定しない限り、常に False です (「Is Ranged」パラメーターに従ってバインドなし)。
ヒントや提案をいただければ幸いです。
前もって感謝します :)
XAML コード:
<TextBox Style="{StaticResource ValidationError}" LostFocus="ForceValidationCheck"
Visibility="{Binding Type, Converter={StaticResource Visibility}, ConverterParameter='Number'}"
IsEnabled="{Binding RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource IsEnabled}}">
<TextBox.Text>
<Binding Path="Value">
<Binding.ValidationRules>
<validation:NumericValidation>
<validation:NumericValidation.Dependency>
<validation:NumericDependency IsRequired="{Binding Path=IsRequired}" IsRanged="True" Min="5"/>
</validation:NumericValidation.Dependency>
</validation:NumericValidation>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
検証クラス:
public NumericDependency Dependency { get; set; }
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
isRequired = Dependency.IsRequired;
}
検証依存クラス:
public static readonly DependencyProperty IsRequiredProperty =
DependencyProperty.Register("IsRequired", typeof(bool), typeof(NumericDependency), new UIPropertyMetadata(default(bool)));
public bool IsRequired
{
get
{
return (bool) GetValue(IsRequiredProperty);
}
set
{
SetValue(IsRequiredProperty, value);
}
}