Серьезно, кажется, что каждый раз, когда я хочу, чтобы мои элементы пользовательского интерфейса разговаривали друг с другом, я в конечном итоге кодирую новый, настраиваемый IValueConverter:( Кто-то скажет мне, что я делаю это неправильно, пожалуйста!
Примеры:
- Я хотел, чтобы кнопка включалась только в том случае, если в моем текстовом поле был допустимый URI. Отлично, время для кода
UriIsValidConverter
! - Ой, я тоже хотел отключить его, пока я что-то обрабатываю. Думаю, теперь мне нужно создать код
UriIsValidAndBoolIsFalseMultiConverter
! - Я хочу отобразить список файлов в определенном каталоге (указанном текстовым полем) внутри списка. Думаю, мне нужен конвертер
DirectoryPathToFileList
! - О, эй, мне нужны значки для каждого из этих файлов в списке. Время для преобразователя
FileInfoToBitmap
! - Я хочу, чтобы мой статус был красным, если моя строка состояния содержит "Ошибка", а зеленый - в противном случае. Yay, я получаю код
StatusStringToSolidColorBrushConverter
!
Я действительно думаю, что это не намного лучше, чем старый метод Windows Forms, просто проводя все вручную, используя события TextChanged
(или что-то еще). Думаю, это вариант. Возможно, это то, что на самом деле делают люди, и я слишком стараюсь сделать все возможное в парадигме привязки данных?
Итак, да, пожалуйста, скажите мне, действительно ли это кодирование WPF, или если я делаю это неправильно, и если да, то что я должен делать.