WPF图像绑定和INotifyPropertyChanged,图像显示问题

本文关键字:图像 显示 问题 绑定 WPF INotifyPropertyChanged | 更新日期: 2023-09-27 18:18:55

我正在尝试在wpf应用程序中绑定图像。我用的是vs2010。

我在下面粘贴代码,并解释我做了什么,什么工作,什么不。

XAML代码:

<Image Name="newImage" ImageFailed="newImage_ImageFailed" HorizontalAlignment="Right" Width="auto" Height="auto"  Margin="5" Source="{Binding imgSource}">
c#代码:

public MainWindow()
        {
            InitializeComponent();            
            arraytoImage atim = new arraytoImage();
            newImage.DataContext = atim;
         }

下面的代码位于不同的命名空间中,其中实现了arraytoImage类。这个类接受一个cuda数组,创建一个位图,然后使用内存流将其转换为位图。现在,我为所有像素设置了一个随机的颜色,只是为了看看绑定是否有效。但事实并非如此。下面我粘贴了一段代码来显示图像。

我确信bitmapimage是正确创建的。我认为问题是绑定不正确。

class arraytoImage : INotifyPropertyChanged
    {
        // displays images (focused files)
        private BitmapImage bitmapImage = new BitmapImage();
        private BitmapImage testim = new BitmapImage();
        public BitmapImage  arraytoImageCon(cuFloatComplex[] dataIn, int wid, int ht)
        {
            //code that generates bitmapimage
        }

  public BitmapImage imgSource
    {
        get { return testim1; }
        set
        {
            if (testim1 != value)
            {
                testim1 = value;
                OnPropertyChanged("imgSource");
            }
        }
    }
    #region INotifyPropertyChanged implementation
    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(propertyName));
    }
    #endregion
}
编辑:调用arrayToImageCon:
public class ReadRawFiles
{  
     //Tons of code
     public void focusdata()
     {
        //tons of code
        arraytoImage atoi = new arraytoImage();
        BitmapImage tmp=  atoi.arraytoImageCon(datafft_azi, nazimuth,nrange);
        atoi.imgSource=tmp;
     }
}

我的问题是,我做错了什么。

提前感谢。如果我遗漏了什么,请进一步询问细节。

WPF图像绑定和INotifyPropertyChanged,图像显示问题

绑定被设置为一个实例。我创建了多个实例。