WPF图像不会以编程方式更新

时间:2018-11-09 17:11:22

标签: c# wpf

我有一个应用程序,我希望它在调用命令时加载图像。但是问题是,没有负载,也没有损坏。我只是看不到我的形象。我还确保将数据上下文设置为视图模型。

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 :(得分:1)

您不能将Image元素用作另一个Image元素的Source属性的值。

将属性类型更改为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使映像文件成为已编译到程序集中的程序集资源。