Источник изображения wpf: привязка формата (-> имя файла) со строковым форматом

у меня есть класс с поддержкой INotifyPropertyChanged, и я подумал, что было бы неплохо использовать:

<Image Source="{Binding myfilename, StringFormat='FixedPath/{0}.png'}" />

поэтому всякий раз, когда я меняю имя файла в исходном коде, я получаю соответствующее изображение в моем графическом интерфейсе wpf.

он компилируется. но в консоли я получаю сообщение об ошибке, что конвертер TargetDefaultValueConverter не смог преобразовать значение myfilename. привязка работает нормально. только строковый формат, похоже, не применяется.

что мне здесь не хватает?


person mxtg    schedule 05.06.2010    source источник


Ответы (1)


Отказ от ответственности: это предположение

Судя по некоторым данным, эта ошибка возникает, когда встроенный преобразователь не может предоставить правильный тип. Итак, то, что вы пытаетесь сделать, было бы хорошо, если бы то, к чему вы привязываетесь, ожидало string. Однако свойство Source на самом деле имеет тип BitmapSource, и по какой-то причине WPF нормально преобразует необработанный string в BitmapSource, но поскольку целевой тип не является string, нельзя запускать встроенный форматировщик строк.

Вы можете попробовать создать свой собственный ValueConverter, который выполняет именно такое форматирование.

person JustABill    schedule 05.06.2010
comment
Вы правы в отношении несоответствия типов, вызывающего сообщение об ошибке. Кроме того, аргумент StringFormat применяется только к нестроковым типам, поэтому даже если он был назначен строковому свойству, он все равно не добавил бы форматирование. Пользовательский конвертер - это путь. - person John Bowen; 05.06.2010
comment
Спасибо за пояснение, это довольно странное ограничение. - person JustABill; 05.06.2010