Я пытаюсь написать собственный WPF ValidationRule, чтобы обеспечить, чтобы определенное свойство было уникальным в контексте данной коллекции. Например: я редактирую коллекцию настраиваемых объектов, связанных с ListView, и мне нужно убедиться, что свойство Name каждого объекта в коллекции уникально. Кто-нибудь знает как это сделать?ValidationRule для принудительного использования уникального имени
ответ
Во-первых, я бы создать простой класс DependencyObject для хранения вашей коллекции:
class YourCollectionType : DependencyObject {
[PROPERTY DEPENDENCY OF ObservableCollection<YourType> NAMED: BoundList]
}
Затем на вашем ValidationRule производный класс, создать свойство:
YourCollectionType ListToCheck { get; set; }
Тогда, в XAML, сделайте следующее:
<Binding.ValidationRules>
<YourValidationRule>
<YourValidationRule.ListToCheck>
<YourCollectionType BoundList="{Binding Path=TheCollectionYouWantToCheck}" />
</YourValidationRule.ListToCheck>
</YourValidationRule>
</Binding.ValidationRules>
После этого в вашей проверке посмотрите на свойство свойства ListDoCheck's BoundList для элемента, с которым вы проверяете. Если он там, очевидно, вернет результат ложной проверки. Если это не так, верните true.
Я бы создал только пользовательский объект зависимости, если бы были другие свойства, которые я хотел связать с этим правилом. Поскольку в этом случае все, что мы делаем, это привязка единственного набора значений для проверки, я сделал свой <UniqueValueValidationRule.OtherValues>
свойством <CollectionContainer>
.
Оттуда, чтобы пройти мимо проблемы DataContext
не унаследованная, <TextBox.Resources>
необходимо иметь <CollectionViewSource>
провести фактическое связывание и дать ему {StaticResource}
ключа, который OtherValues
может затем использовать в качестве источника привязки.
Само правило валидации требует только цикла OtherValues.Collection
и выполнения проверок равенства.
Наблюдайте:
<TextBox>
<TextBox.Resources>
<CollectionViewSource x:Key="otherNames" Source="{Binding OtherNames}"/>
</TextBox.Resources>
<TextBox.Text>
<Binding Path="Name">
<Binding.ValidationRules>
<t:UniqueValueValidationRule>
<t:UniqueValueValidationRule.OtherValues>
<CollectionContainer Collection="{Binding Source={StaticResource otherNames}}"/>
</t:UniqueValueValidationRule.OtherValues>
</t:UniqueValueValidationRule>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
- 1. Wpf datagrid validationrule для уникального поля
- 2. Шаблон для принудительного использования очереди
- 3. Htaccess для принудительного использования WWW для mutlidomain
- 4. Android-студия: lint для принудительного использования '&&' вместо '&'?
- 5. gcc флаг для принудительного использования предопределенных макросов
- 6. Только для принудительного использования Eclipse Java 1.4
- 7. Использование мьютекса для принудительного использования одного экземпляра
- 8. tools: overrridelibrary = "com.google.andriod.gms.play_services" для принудительного использования
- 9. Использование bind для принудительного использования функции прототипа
- 10. Есть ли способ принудительного использования имени функции использования компоновщика, а не ординального для импорта функции?
- 11. кодировка url для короткого уникального имени файла
- 12. Поиск уникального имени пути для заданного ввода
- 13. Php Обеспечение уникального имени пользователя
- 14. проект как перепроектировать для использования уникального dao
- 15. Использование SQL для вычисления среднесуточного уникального использования
- 16. genfromtxt - Генерация имени столбца принудительного вызова для неизвестного количества столбцов
- 17. IDataErrorInfo vs ValidationRule vs Exception
- 18. Codeless kext для принудительного использования конкретного драйвера (CDC-ACM)
- 19. Как я могу использовать RecognizerIntent для принудительного использования турецкого языка?
- 20. Поле для принудительного использования SharePoint должно быть относительным
- 21. Что необходимо для принудительного использования собственности на зависимость?
- 22. Как использовать .htaccess для принудительного использования www. используя Zend Framework
- 23. Что такое синтаксис принудительного использования индекса для соединения в MySQL
- 24. Отключить рекурсию в Ruby для принудительного использования Y Combinator
- 25. Как использовать htaccess для принудительного использования www. на нескольких доменах
- 26. Используйте .htaccess для принудительного использования www И https
- 27. Использовать настройку в сеансе для установки принудительного использования SSL
- 28. Должен ли я использовать интерфейсы для принудительного использования дженериков?
- 29. Access/validationrule - расчет
- 30. WPF ValidationRule со свойством
Это не похоже на работу, связывающая результат всегда пустой (кажется, не наследует DataContext) – 2010-05-04 05:46:29