Пользовательское правило проверки не работает - PullRequest
0 голосов
/ 19 марта 2012

Ниже приведен код, который не работает.Я заставил это работать без проверки, я имею в виду, что я установил критерий внутри MyClass 'set, и он работал.Однако, когда я пробую правило проверки, оно не работает.

class MyClass
{
    private string num;

    public string MyString
    {
        get
        {                    
            return num;
        }
        set
        {
            num = value;             
        }
    }
}

public class MyValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        float num = System.Convert.ToSingle(value);

        // Is positive?
        if (num < 0)
        {                    
            return new ValidationResult(false, "Must be positive");
        }

        // Number is valid
        return new ValidationResult(true, null);
    }
}

public MainWindow()
{
    InitializeComponent();

    mc = new MyClass();
    Binding b = new Binding(mc.MyString);
    b.Mode = BindingMode.TwoWay;
    b.ValidationRules.Add(new MyValidationRule());
    b.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;

    MyTextBox.DataContext = mc;
}

1 Ответ

3 голосов
/ 19 марта 2012

Ваш переплет кажется сломанным.Это:

Binding b = new Binding(mc.MyString);

... должно быть:

Binding b = new Binding("MyString");

Также я даже не вижу ни одного звонка на SetBinding.

( Как отладить привязки )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...