У меня есть приложение, в котором я хочу загружать изображение при вызове команды. Но проблема в том, что ничего не загружается и ничего не ломается. Я просто не вижу своего изображения. Я также убедился, что устанавливаю контекст данных для моей модели представления.
XAML:
<Image Grid.Column = "3" Source = "{Binding Path=LoadingImage, Mode=TwoWay}" Width = "35" Height = "35"/>
ViewModel:
private Image _loadingImage = new Image();
public Image LoadingImage
{
get => _loadingImage;
set
{
_loadingImage = value;
RaisePropertyChanged(nameof(LoadingImage));
}
}
//Method called by the command... i debugged it and it gets here just fine
private void GetDirectories()
{
FolderBrowserDialog folderBrowseDialog = new FolderBrowserDialog();
DialogResult result = folderBrowseDialog.ShowDialog();
if (result == DialogResult.OK)
{
//This is how I am getting the image file
LoadingImage.Source = new BitmapImage(new Uri("pack://application:,,,/FOONamespace;component/Resources/spinner_small.png"));
//More code below
}
}
Некоторые другие настройки, мой файл .png имеет следующие свойства:
Build Action: Resource
Copy to Output Directory: Copy if newer
Для меня это головной убор. Что я делаю неправильно? Большое спасибо.





Вы не можете использовать элемент Image в качестве значения свойства Source другого элемента Image.
Измените тип свойства на ImageSource:
private ImageSource _loadingImage;
public ImageSource LoadingImage
{
get => _loadingImage;
set
{
_loadingImage = value;
RaisePropertyChanged(nameof(LoadingImage));
}
}
и назначьте свойство следующим образом:
LoadingImage = new BitmapImage(
new Uri("pack://application:,,,/FOONamespace;component/Resources/spinner_small.png"));
Кроме того, установка режима привязки на TwoWay бессмысленна.
<Image Source = "{Binding LoadingImage}" />
и копирование в выходной каталог также не нужно, потому что действие сборки Resource делает файл образа ресурсом сборки, который компилируется в сборку.
Ага, я сразу это увидел, сразу после того, как выложил. Если вы не возражаете, я спрашиваю, почему установка двустороннего режима привязки бессмысленна? В любом случае большое спасибо!
Элемент Image никогда не изменяет значение своего свойства Source, поэтому направление привязки никогда не бывает от цели к источнику.
Если это вообще сработает, я буду удивлен. LoadingImage должен быть ImageSource или BitmapImage, а не изображением. Вы привязываете LoadingImage к свойству Source, поэтому он должен быть типом ImageSource (например, BitmapImage).