Я пытаюсь связать изображение в приложении 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;
}
}
Мой вопрос, что я делаю неправильно.
Большое спасибо. Пожалуйста, спросите подробности, если я что-то пропустил.
С уважением
Ваш код немного грязный. Почему бы вам не избавиться от testim1 и сразу вернуть bitmapImage. Также, где вы называете arrayToImage con? Почему вы не вызываете сеттера там напрямую, поэтому свойство получает должным образом поднятый? – dowhilefor
Попробуйте 'test = bitmapImage;' вместо 'testim1 = bitmapImage;' –
@dowhile для своего беспорядочного, потому что я на начальной стадии обучения. Пожалуйста, будьте осторожны. Thanks – Naresh