WPF Image не будет обновляться программно - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть приложение, в котором я хочу, чтобы оно загружало изображение при вызове команды. Но проблема в том, что ничего не загружается и ничего не ломается. Я просто не вижу свое изображение. Я также удостоверился, что я устанавливал контекст данных для моей модели представления.

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

Это голова для меня. Что я делаю неправильно? Большое спасибо.

1 Ответ

0 голосов
/ 09 ноября 2018

Нельзя использовать элемент 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}" />

и копирование в выходной каталог также не требуется, поскольку действие Build Action Resource делает файл образа ресурсом сборки, который компилируется в сборку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...