سؤال

أنا أستخدم WPF ولدي كيان مرتبط بسلسلة من عناصر التحكم. تم تزيين الكيان بمصحفي من محققتي المستوى على النحو التالي:

[ExampleValidator1, ExampleValidator2]
public class Entity

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

public bool IsValid(object value, IConstraintValidatorContext constraintValidatorContext)
    {

        constraintValidatorContext.DisableDefaultError();
        var allPropertiesValid = true;
        var entity= (Entity)value;

        if (supplier.ParticularEntityType)
        {
            return true;
        }



        if (String.IsNullOrEmpty(entity.Name) || entity.Name.Length > 50)
        {
            constraintValidatorContext.AddInvalid<Entity, string>("must be 50 or shorter and not empty", x => x.Name);
            allPropertiesValid = false;
        }

و XAML كما يلي:

                <TextBox Grid.Row="0" Grid.Column="3">
                    <TextBox.Text>
                        <Binding Path="Entity.Name" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True">
                        </Binding>
                    </TextBox.Text>
                </TextBox>

من الواضح أنني أحصل على الصندوق الأحمر الجميلات الجميلة ونصائح الأداة بإبلاغ المستخدمين بمتطلبات التحقق من الصحة.

مشكلتي هي أنه عندما يتم تغيير التحديد في combobox، يستمر الضوء الأحمر (يصبح مربع أحمر صغير عند إخفاء عنصر تحكم). هل يمكن لشخص توجيه لي الطريق الصحيح من فضلك!

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

المحلول

حلها عن طريق إطلاق النار على OnPropertychanged عند تغيير combobox، وليس حلا مثاليا ولكنه عملي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top