将 wpf xaml 图像绑定到 System.Windows.Controls.Image 不起作用

Posted

技术标签:

【中文标题】将 wpf xaml 图像绑定到 System.Windows.Controls.Image 不起作用【英文标题】:Binding a wpf xaml image to System.Windows.Controls.Image is not working 【发布时间】:2020-11-01 06:56:25 【问题描述】:

我在 wpf 应用程序中有一个图像并将其 Source 属性绑定到视图模型中的 System.Windows.Controls.Image 但它不起作用。但是当我将其 Source 属性绑定到 BitmapImage 时,它​​正在工作。有没有办法将 Source 属性绑定为 System.Windows.Controls.Image ?

Xaml 部分

  <Image x:Name="ShipMainImage" Source="Binding MainImageSource" />

查看模型部分

 public class StabilityVM : INotifyPropertyChanged 
    private System.Windows.Controls.Image mainImageSource;

    public System.Windows.Controls.Image MainImageSource
    
        get  return mainImageSource; 
        set 
            mainImageSource = value;
            OnPropertyChanged(nameof(MainImageSource)); 
    

 protected virtual void OnPropertyChanged(string propertyName = null)
    
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    

   public event PropertyChangedEventHandler PropertyChanged;

【问题讨论】:

【参考方案1】:

不要使用System.Windows.Controls.Image 作为该属性的类型。它是一种在视图中使用的 UI 元素类型,但不在视图模型中。

将属性声明为System.Windows.Media.ImageSource - Image 元素的Source 属性的类型:

private ImageSource mainImageSource;

public ImageSource MainImageSource

    get  return mainImageSource; 
    set
    
        mainImageSource = value;
        OnPropertyChanged(nameof(MainImageSource));
    

【讨论】:

感谢@Clemens 的回答。我的问题是为什么将 xaml 图像 Source 属性绑定到 System.Windows.Controls.Image 不起作用。只有 Source 属性与 BitmapImage 的绑定有效。我更新了我的问题,请看一下。

以上是关于将 wpf xaml 图像绑定到 System.Windows.Controls.Image 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将 wpf:ComboBox 绑定到 XAML 中的静态类

为啥 WPF/XAML 绑定使用 x:Reference 气质?

将 WPF xaml 绑定到 ViewModel 而不构造它

WPF XAML - 将数据网格列绑定到外键(数据集)

wpf如何将一个TreeView绑定到另一个TreeView

当 WPF 中的绑定为空时,如何避免 xaml 警告?