2015-12-30 9 views
0

Я хочу использовать DXValidationProvider, чтобы проверить, является ли имя Item внутри TextEdit уникальным. У меня есть коллекция доступных Item объектов.Используйте DXValidationProvider для проверки значения против коллекции значений

Псевдо код класса Item:

class Item { 
    public string Name {get;set;} 
    // ... 
} 

Сначала я создаю ConditionValidationRule:

List<Item> MyItems; 
// .... MyItems is filled somewhere there. Its size is >0 for sure (checked with debugger). 
// Binding works for sure too. 
ConditionValidationRule uniqueItemNameRule = new ConditionValidationRule(); 
uniqueItemNameRule.CaseSensitive = false; 
uniqueItemNameRule.ConditionOperator = ConditionOperator.NotAnyOf; 
uniqueItemNameRule.ErrorText = "Name must be unique"; 
uniqueItemNameRule.ErrorType = ErrorType.Critical; 
uniqueItemNameRule.Value1 = MyItems.Select(x => x.Name).ToList(); 
validationProvider.SetValidationRule(teName, uniqueItemNameRule); 

Однако, когда я установил имя элемента, который не является уникальным, проверка проходит в любом случае. Я не забыл выполнить валидацию, так как другие правила работают по назначению. В DevExpress отсутствует документация по правилам проверки, поэтому на самом деле нет чтения.

ответ

1

Для ConditionOperator.NotAnyOf вы должны использовать собственность ConditionValidationRule.Values вместо ConditionValidationRule.Value1.
Вот пример:

uniqueItemNameRule.Values.AddRange(MyItems.Select(x => x.Name).ToList());