Загрузка изображения и привязка
У меня есть код для загрузки изображения в Image, привязка работает, но в рантайме выдает ошибку(не исключение, т.к. приложение не падает): Cannot convert '<null>' from type '<null>' to type 'System.Windows.Media.ImageSource' for 'en-US' culture with default conversions; consider using Converter property of Binding. NotSupportedException:'System.NotSupportedException: ImageSourceConverter cannot convert from (null). Из-за этой ошибки загруженная картинка не показывается, хотя в коде для загрузки реализовал интерфейс INotifyPropertyChanged в качестве отдельного метода в отдельном классе, который вызывается в сеттере свойства, привязанного к Image.
Разметка изображения:
<Image Source="{Binding _AvatarPath}" Margin="53,56,981,558"/>
Класс для загрузки изображения C#:
internal class ProfileEditor : INotifyPropertyChangedImp
{
private readonly INotifyPropertyChangedImp propchange = new INotifyPropertyChangedImp();
public static Uri? AvatarPath;
public Uri? _AvatarPath
{
get { return AvatarPath; }
set
{
AvatarPath = value;
propchange.NotifyPropertyChanged("_AvatarPath");
}
}
public static void ChangeAvatar()
{
OpenFileDialog fDialog = new OpenFileDialog();
fDialog.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" +
"JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" +
"Portable Network Graphic (*.png)|*.png";
fDialog.CheckFileExists = true;
if (fDialog.ShowDialog() == true)
{
var uri = new Uri(fDialog.FileName);
AvatarPath = uri;
}
}
}
Класс, реализующий интерфейс INotifyPropertyChanged:
internal class INotifyPropertyChangedImp : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
internal void NotifyPropertyChanged([CallerMemberName] string? propname = null)
{
if (PropertyChanged != null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propname));
}
}
}
Изначально, метод для загрузки картинки в Image в разметке был в файле xaml.cs, позже я решил его перенести в отдельный класс.
Собственно, у меня есть несколько вопросов:
Можно ли таким образом реализовывать интерфейс INotifyPropertyChanged? Возможно я его просто неправильно реализовал, подскажите пожалуйста.
Какой лучше метод привязки здесь использовать? Возможно я и привязку неправильно сделал.
Как все-таки избавиться от ошибки, описанной выше(
Cannot convert '<null>' from type '<null>' to type 'System.Windows.Media.ImageSource' for 'en-US' culture with default conversions; consider using Converter property of Binding. NotSupportedException:'System.NotSupportedException: ImageSourceConverter cannot convert from (null).). Честно, первый раз сталкиваюсь с этим, и понятия не имею что здесь нужно делать.Может ли быть все это из-за того, что в свойстве
AvatarPathиспользуетсяnullable?(прошу, поправьте если не так это называется) после типа данных?
Буду рад любой помощи, спасибо!