مشاركة عبر


كيفية القيام بما يلي: تطبيق منطق الصلاحية على كائنات مخصصة

يوضح هذا المثال كيفية تطبيق لتحقق من صحة منطق على كائن مخصص و يربط ثم إليه.

مثال

يمكنك توفير التحقق من صحة منطقى على طبقة العمل إذا كان كائن مصدر بتنفيذ IDataErrorInfo كما في المثال التالي:

    Public Class Person
        Implements IDataErrorInfo

        Private _age As Integer
        Public Property Age() As Integer
            Get
                Return _age
            End Get
            Set(ByVal value As Integer)
                _age = value
            End Set
        End Property

        Public ReadOnly Property [Error]() As String Implements IDataErrorInfo.Error
            Get
                Return Nothing
            End Get
        End Property

        Default Public ReadOnly Property Item(ByVal columnName As String) As String Implements IDataErrorInfo.Item
            Get
                Dim result As String = Nothing

                If columnName = "Age" Then
                    If Me._age < 0 OrElse Me._age > 150 Then
                        result = "Age must not be less than 0 or greater than 150."
                    End If
                End If
                Return result
            End Get
        End Property
    End Class
public class Person : IDataErrorInfo
{
    private int age;

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public string Error
    {
        get
        {
            return null;
        }
    }

    public string this[string name]
    {
        get
        {
            string result = null;

            if (name == "Age")
            {
                if (this.age < 0 || this.age > 150)
                {
                    result = "Age must not be less than 0 or greater than 150.";
                }
            }
            return result;
        }
    }
}

في المثال التالي ، وخاصية النص من مربع النص مربوطة بخاصية Age من الكائن Person الذي تم توفيره للربط خلال تعريف مورد معطى x:Keydata. DataErrorValidationRule بالتحقق من أخطاء التحقق من الصحة بواسطة IDataErrorInfo التنفيذ.

<TextBox Style="{StaticResource textBoxInError}">
    <TextBox.Text>
        <!--By setting ValidatesOnExceptions to True, it checks for exceptions
        that are thrown during the update of the source property.
        An alternative syntax is to add <ExceptionValidationRule/> within
        the <Binding.ValidationRules> section.-->
        <Binding Path="Age" Source="{StaticResource data}"
                 ValidatesOnExceptions="True"
                 UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <!--DataErrorValidationRule checks for validation 
                    errors raised by the IDataErrorInfo object.-->
                <!--Alternatively, you can set ValidationOnDataErrors="True" on the Binding.-->
                <DataErrorValidationRule/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

بدلاً من استخدام DataErrorValidationRule، يمكنك تعيين خاصية ValidatesOnDataErrors لـ true .

راجع أيضًا:

المهام

كيفية القيام بما يلي: تنفيذ التحقق من صلاحية الربط

المرجع

ExceptionValidationRule

موارد أخرى

المواضيع الإجرائية لربط البيانات