2013-06-18 57 views
1

我想在wpf應用程序中綁定圖像。我正在使用vs2010。WPF圖像綁定和INotifyPropertyChanged,與圖像顯示問題

我粘貼下面的代碼,並解釋我做了什麼,什麼起作用,什麼不起作用。

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數組,創建一個位圖,然後使用memorystream將其轉換爲bitmapimage。目前,我正在爲所有像素設置隨機顏色,以查看該綁定是否有效。但事實並非如此。下面我粘貼了一個顯示圖片的代碼。

我相信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; 
    } 
} 

我的問題是,我在做什麼錯。

非常感謝。如果我錯過了一些東西,請詢問更多細節。

Regards

+0

你的代碼有點混亂。爲什麼不直接刪除testim1並返回bitmapImage。你也可以在哪裏調用arrayToImage con?你爲什麼不直接在那裏打電話給這位二傳手,這樣財產得到適當的提升? – dowhilefor

+0

嘗試'test = bitmapImage;'而不是'testim1 = bitmapImage;' –

+0

@dowhile因其雜亂,因爲我處於學習的初始階段。請稍微詳細一點。謝謝 – Naresh

回答

0

binding設置爲一個實例。我正在製作多個實例。