ValueConverter по умолчанию для привязки - PullRequest
4 голосов
/ 12 июня 2009

Есть ли способ заставить WPF автоматически применять Converter ко всем привязкам определенного типа?

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

Моя проблема: у меня есть классы моделей, содержащие Commands, которые я хотел бы привязать к командам WPF. Так как классы модели не зависят от инструментария, я не могу реализовать WPF ICommand там. Вместо этого у меня есть CommandConverter, который включает CommandModel s в WPF ICommand s:

<Button Command="{Binding MyCommand, Converter={StaticResource CommandConverter}}" />

Это работает довольно хорошо, за исключением того, что о Converter= легко забыть, а WPF не дает никаких указаний на сбой привязки.

Теперь у меня вопрос: есть ли возможность заставить WPF всегда применять конвертер для определенных типов привязок? Или, как альтернатива, как я могу заставить WPF выдавать мне правильные сообщения об ошибках при привязке команд?

Ответы [ 3 ]

2 голосов
/ 12 июня 2009

Я не думаю, что вы можете обойтись без подкласса Button (вы, вероятно, не хотите этого делать), без определения собственного присоединенного свойства и использования атрибута TypeConverter для него.

Если вы хотите использовать конвертер по умолчанию через атрибут TypeConverter в новом присоединенном свойстве, вы можете посмотреть информативный пост Роба Рельеа здесь или MSDN здесь .

2 голосов
/ 14 июня 2009

Хотя я никогда этого не делал, возможно ли будет определить собственное расширение разметки? Это должно привести к тому, что значение будет отправлено вашему классу, который реализует расширение разметки, а затем оттуда вы можете вернуть ICommand, что ожидает свойство Command.

Как я уже сказал, я никогда не создавал сам, но Поиск Google , кажется, поднимает несколько статей о том, как это сделать.

0 голосов
/ 12 июня 2009

Проверьте окно вывода отладки. Обычно вы видите там ошибки привязки.

...