أفضل الممارسات لقواعد ربط البيانات والتحقق من صحتها في WPF

StackOverflow https://stackoverflow.com/questions/63646

سؤال

لدي تطبيق WPF بسيط جدًا أستخدم فيه ربط البيانات للسماح بتحرير بعض كائنات CLR المخصصة.أريد الآن إجراء بعض التحقق من صحة الإدخال عندما ينقر المستخدم على "حفظ".ومع ذلك، فإن جميع كتب WPF التي قرأتها لا تخصص أي مساحة لهذه القضية.أرى أنه يمكنك إنشاء ValidationRules مخصصة، ولكنني أتساءل عما إذا كان هذا سيكون مبالغة بالنسبة لاحتياجاتي.

لذا سؤالي هو هذا:هل يوجد نموذج تطبيق جيد أو مقالة في مكان ما توضح أفضل الممارسات للتحقق من صحة إدخال المستخدم في WPF؟

هل كانت مفيدة؟

المحلول

أعتقد أن الطريقة المفضلة الجديدة قد تكون استخدام IDataErrorInfo

اقرأ أكثر هنا

نصائح أخرى

من مرض التصلب العصبي المتعدد وثائق الأنماط والممارسات:

التحقق من صحة البيانات والإبلاغ عن الأخطاء

غالبًا ما يُطلب من نموذج العرض أو النموذج الخاص بك إجراء التحقق من صحة البيانات والإشارة إلى أي أخطاء التحقق من صحة البيانات في العرض حتى يتمكن المستخدم من تصحيحها.

يوفر Silverlight و WPF الدعم لإدارة أخطاء التحقق من صحة البيانات التي تحدث عند تغيير الخصائص الفردية التي لا بد من عناصر التحكم في العرض.بالنسبة للخصائص المفردة التي تكون مرتبطة بالبيانات لعنصر تحكم ، يمكن أن يشير نموذج العرض أو النموذج إلى خطأ في التحقق من صحة البيانات داخل Setter Property من خلال رفض قيمة سيئة واردة ورمي استثناء.إذا كانت خاصية التحقق من صحة onexceptions على ربط البيانات صحيحة ، فإن محرك ربط البيانات في WPF و Silverlight سيتعامل مع الاستثناء وعرض جديلة مرئية للمستخدم أن هناك خطأ في صحة البيانات.

ومع ذلك ، يجب تجنب الاستثناءات مع الخصائص بهذه الطريقة حيثما أمكن.تتمثل النهج البديل في تنفيذ واجهات idataerrorinfo أو inotifyDataerRorinfo على طراز العرض أو فئات النماذج.تتيح هذه الواجهات نموذج العرض أو النموذج الخاص بك بإجراء التحقق من صحة البيانات لواحد أو أكثر من قيم الخصائص وإرجاع رسالة خطأ إلى العرض بحيث يمكن إخطار المستخدم بالخطأ.

تستمر الوثائق في شرح كيفية تطبيق IDataErrorInfo وINotifyDataErrorInfo.

شخصيًا، أنا أستخدم الاستثناءات للتعامل مع التحقق من الصحة.يتطلب الخطوات التالية:

  1. في تعبير ربط البيانات الخاص بك، تحتاج إلى إضافة "ValidatesOnException=True"
  2. في كائن البيانات الخاص بك الذي ترتبط به، تحتاج إلى إضافة معالج DependencyPropertyChanged حيث تتحقق مما إذا كانت القيمة الجديدة تستوفي شروطك - إذا لم تكن كذلك - يمكنك استعادة القيمة القديمة للكائن (إذا كنت بحاجة إلى ذلك) وتقوم برمي الاستثناء.
  3. في قالب التحكم الخاص بك الذي تستخدمه لعرض قيمة غير صالحة في عنصر التحكم، يمكنك الوصول إلى مجموعة الأخطاء وعرض رسالة الاستثناء.

الحيلة هنا هي الارتباط فقط بالكائنات المشتقة من DependencyObject.لن ينجح التنفيذ البسيط لـ INotifyPropertyChanged - يوجد خطأ في إطار العمل، مما يمنعك من الوصول إلى مجموعة الأخطاء.

تحقق أيضا هذا المقال.من المفترض أن مايكروسوفت أطلقت سراحهم مكتبة المؤسسة (الإصدار 4.0) من أنماطهم وممارساتهم حيث يغطون موضوع التحقق ولكن الله يعلم لماذا لم يدرجوا التحقق من الصحة لـ WPF، لذا فإن منشور المدونة الذي أوجهك إليه يشرح ما فعله المؤلف لتكييفه.أتمنى أن يساعدك هذا!

قد تكون مهتمًا بـ مكتبة الكتب تطبيق عينة من إطار تطبيق WPF (WAF).يوضح كيفية استخدام التحقق من الصحة في WPF وكيفية التحكم في زر الحفظ عند وجود أخطاء في التحقق من الصحة.

إذا تم استخدام فئة الأعمال الخاصة بك مباشرةً بواسطة واجهة المستخدم الخاصة بك، فمن الأفضل استخدام IDataErrorInfo لأنه يجعل المنطق أقرب إلى مالكه.

إذا كانت فئة الأعمال الخاصة بك عبارة عن فئة كعب روتين تم إنشاؤها بواسطة مرجع إلى خدمة WCF/XmlWeb، فلا يمكنك/لا يجب عليك استخدام IDataErrorInfo أو طرح استثناء للاستخدام مع ExceptionValidationRule.بدلا من ذلك يمكنك:

  • استخدم قاعدة التحقق المخصصة.
  • حدد فئة جزئية في مشروع WPF UI الخاص بك وقم بتنفيذ IDataErrorInfo.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top