2010-10-20 5 views
0

Во время одного из моих проектов мне нужно добавить обязательную проверку поля в поле со списком приложения wpf. в нашем процессе мы порождаем форму, зависящую от условия. после того, как форма сгенерирована, и все элементы управления отображаются, нам необходимо реализовать правило проверки для элементов управления, например, для требуемого текстового поля. Мне нужно проверить, не пустое ли это поле, а в поле со списком проверка проверит выбранный индекс ли он больше 0-индекса.Как реализовать Wpf Combo box Validation

я ищу все выше требование, но все они дают мне пример связывания и применению правила проверки в XAML файл не в файле код

как я могу применить проверку требуемого поля в текстовом поле, поле со списком , окно списка и флажок?

ответ

4

Вы также можете установить привязку в коде.

1- Создать новый класс правил проверки, как показано ниже.

public class TextBoxEmptyRule : ValidationRule 
{ 
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) 
    { 
     ValidationResult vr = new ValidationResult(true,null); 
     if (string.IsNullOrEmpty(value)) 
     { 
      vr.ErrorContent = " Value can not be null!"; 
      vr.IsValid = false; 
     } 
     return vr; 


    } 
} 

2- Определяя новое текстовое поле, вы можете добавить привязку во время выполнения, как показано ниже.

 TextBox txt = new TextBox(); 

     Binding b = new Binding("Your Path Here"); 

     b.Source = "Your Source Here"; 

     b.ValidationRules.Add(new TextBoxEmptyRule()); 

     txt.SetBinding(TextBox.TextProperty, b); 

3- Вы можете добавить столько, сколько необходимо для привязки.

4 То же можно добавить в поле со списком

+0

Спасибо за ответ в вашем случае, мне нужно создать свойство первым, а затем присвоить значение пути к конструктору привязки класса, то, как создать свойство во время выполнения. – JSJ

+0

@J S: Вы заранее знаете свой источник данных и какое свойство вы хотите назначить. – TalentTuner

+0

все, что подходит для моей работы как ваше предложение, но для меня не хватает всего одного, мне нужно создать свойство для каждого элемента управления, который невозможен для меня. свойство, которое нам нужно предоставить в конструкторе связывания – JSJ

0

Это обеспечивает ValidationRule кодом примера C#. Кроме того, this ответ может помочь.

-2

Если вы не хотите использовать привязку, вы можете просто поймать событие LostFocus и реализовать свои правила проверки.