باستخدام التحقق من الصحة في WPF مع خاصية التبعية و مشغلات الأنماط

أحاول استخدام التحقق من الصحة في WPF. لقد قمت بإنشاء NotNullOrEmptyValidationRule كما هو موضح أدناه:

public class NotNullOrEmptyValidationRule : ValidationRule
    {
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            if (String.IsNullOrEmpty(value as String))
                return new ValidationResult(false, "Value cannot be null or empty");

            return new ValidationResult(true, null); 
        }
    }

الآن ، أنا بحاجة إلى استخدامه في طلبي. في ملف App.xaml الخاص بي ، أعلنت النمط لـ TextBox. هنا هو الاعلان.

 
        

الآن ، أريد استخدامه على مربع النص الخاص بي ، لذا فأنا أستخدم التعليمة البرمجية التالية:

  
                
                    
                        
                            
                        
                    
                


            

يأتي الخطأ على Tag NotNullOrEmptyValidationRule. مدقق بناء جملة XAML غير قادر على حل NotNullOrEmptyValidationRule. لقد حاولت حتى وضع مساحة الاسم ولكن لا يبدو أنها تعمل.

0
وأضاف تحرير
الآراء: 1

4 إجابة

يوجد خطأ في Visual Studio و Expression Blend الذي يسبب هذه المشكلة. ما عليك القيام به هو التأكد من وجود قاعدة التحقق في مشروع/تجميع بشكل مستقل يمكنك الرجوع إليه. هذا يجب حل المشكلة.

ومع ذلك ، يجب عليك إعادة إضافة مساحة الاسم لكي تعمل.

0
وأضاف

تحتاج فقط إلى إضافة xmlns إلى النافذة الخاصة بك ، واستخدام ذلك للإشارة إلى ValidationRule الخاص بك.

في wpf ، الكائن جيد تمامًا ليتم استخدامه من نفس التجميع.

نظرًا لأنه لم يتم تعريف القاعدة الخاصة بك في مساحة اسم XAML القياسية ، يجب عليك إنشاء تعيين إلى مساحة الاسم clr الخاصة بك كما يلي:


ومن ثم ستستخدمها كما يلي:


    
        
    

Edit I added a Path statement to the Binding. You have to tell the Binding what to bind to :)

0
وأضاف

أرى الربط الخاص بك على TextBox تم تعيينه إلى مسار 'النص' - هو أن الحقل على أي datacontext من مربع النص هذا؟ هو مربع النص في الواقع الحصول على قيمة وضعت فيه؟ أيضًا ، إذا وضعت نقطة توقف في طريقة التحقق ، فهل يتم إطلاقها؟

قد ترغب في البحث عن كيفية تسجيل الفشل في الربط ومراجعة تلك أيضا ..

0
وأضاف

ليس لديك هذا الخط في رمز ur خلفه

Public Sub New()

    ' This call is required by the Windows Form Designer.
    InitializeComponent()

    Me.**NameOfTextBox**.DataContext = Me
End Sub
0
وأضاف