У меня есть форма с компонентом изображения. Я хотел бы загрузить изображение во время выполнения. В моей ViewModel, я имею свойство, которое представляет путь источника изображения:Заблокировать привязку данных MVVM
public string ImagePath { get; set; }
Это свойство является обязательным для Источника моего ImageComponent. Проблема заключается в том, что при запуске приложения ImagePath имеет значение null, а конвертер по умолчанию пытается конвертировать ImagePath в System.Windows.Media.ImageSource и создавать исключение.
Я думал, 3 решения:
- Создание пользовательского преобразователя (который может дать ImageSource по умолчанию, когда строка является нулевой)
- Препятствовать вид, чтобы получить ImagePath (Не знаю, как)
- Использование a System.Windows.Media.ImageSource
вместо строки. (не уверен, что шаблон MVVM соответствует запросу System.Windows.Media используется только в представлении)
Итак, мой вопрос: какое решение лучше (не только мое 3) и какова будет реализация?
Часть XAML Переплет:
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Image Name="image" Stretch="Uniform" Source="{Binding Main.ImagePath, Mode=OneWay, Source={StaticResource Locator}}" />
</ScrollViewer>
Исключение, поднятый:
System.Windows.Data Error: 23 : Cannot convert '' from type 'String' to type 'System.Windows.Media.ImageSource' for 'en-US' culture with default conversions;
Можете ли вы добавить Control + Binding, который вы используете в XAML? – Staeff
Я отредактировал мой вопрос, спасибо – Epitouille
Хм, странно, я не получаю эту ошибку, независимо от того, установил ли я ImagePath значение «null», «» «», допустимый или недопустимый путь ... может быть, потому что я не использую ViewModelLocator, я также попробую это – Staeff