0

Binding 値を に送信する必要がありますValidationRule。を使用してDependencyObjectいますが、値は常にnullです。

これが私のDependencyObject

public class MyDependencyObject  : DependencyObject
{
    public string BindingValue
    {
        get { return (string)GetValue(BindingValueProperty); }
        set { SetValue(BindingValueProperty, value); }
    }
    public static readonly DependencyProperty BindingValueProperty =
        DependencyProperty.Register("BindingValue", typeof(string), typeof(MyDependencyObject), new UIPropertyMetadata(null));    
}

これが私のものValidationRuleです:

public class MyTextBoxValidationRule : ValidationRule
{
    private MyDependencyObject _TxtVal;
    public MyDependencyObject TxtVal
    {
        get { return _TxtVal; }
        set { _TxtVal = value; }
    }
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        //Validation Logic
    }   
}

は次のXAMLとおりです。

<TextBox >
    <TextBox.Text>
        <Binding Path="DataUserTypes" 
            NotifyOnValidationError="True" 
            ValidatesOnDataErrors="True" 
            Mode="TwoWay" 
            UpdateSourceTrigger="PropertyChanged"  
            NotifyOnSourceUpdated="True" 
            NotifyOnTargetUpdated="True"
            Delay="100">
            <Binding.ValidationRules>
                <local:MyTextBoxValidationRule ValidatesOnTargetUpdated="True"  >
                    <local:MyTextBoxValidationRule.TxtVal >
                        <local:MyDependencyObject   
                            TxtVal="{Binding Path=ValidateValue}" />
                    </local:MyTextBoxValidationRule.TxtVal>
                </local:MyTextBoxValidationRule>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

Validate をステップ実行すると、MyTextBoxValidationRule TxtVal.BindingValue常にnull. 理由がわかりません

編集:

混乱しているように見えるので、に変更DisplayValueしました。DataUserTypes

<Binding Path="DataUserTypes" 

これは、テキスト ボックスの Text 値のバインディングです。DataUserTypesプロパティに基づいて検証する必要がありますValidateValue。でそれをやろうとしていDependencyObject TxtValます。

コピー&ペーストタイプも修正しました。TextValIDあるはずの というフィールドがありましたTxtVal。申し訳ありません。

4

1 に答える 1