2013-06-18 2 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, создает растровое изображение и затем преобразует его в bitmapimage с использованием memystream. На данный момент я устанавливаю случайный цвет для всех пикселей, чтобы увидеть, работает ли это связывание. Но это не так. Ниже я вставил код, который отображает изображение.

Я уверен, что 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 
} 

Edit: вызов 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; 
    } 
} 

Мой вопрос, что я делаю неправильно.

Большое спасибо. Пожалуйста, спросите подробности, если я что-то пропустил.

С уважением

+0

Ваш код немного грязный. Почему бы вам не избавиться от testim1 и сразу вернуть bitmapImage. Также, где вы называете arrayToImage con? Почему вы не вызываете сеттера там напрямую, поэтому свойство получает должным образом поднятый? – dowhilefor

+0

Попробуйте 'test = bitmapImage;' вместо 'testim1 = bitmapImage;' –

+0

@dowhile для своего беспорядочного, потому что я на начальной стадии обучения. Пожалуйста, будьте осторожны. Thanks – Naresh

ответ

0

Связывание устанавливается в одном экземпляре. Я делал несколько экземпляров.

Смежные вопросы