2013-02-26 2 views
0

Я пытаюсь добавить динамическое изображение в свою форму WPF. Я добавил изображение так:Получение динамического изображения через событие в WPF

<Image Height="212" HorizontalAlignment="Left" Margin="12,167,0,0" 
    Name="picture_scan" Stretch="Fill" VerticalAlignment="Top" Width="227" 
    Source="{Binding FingerprintSource}" /> 

Источник приводит к следующему коду в моем классе обслуживания:

public BitmapSource FingerprintSource 
{ 
    get { return fingerprintScan.WpfImageSource; } 
} 

WpfImageSource является BitmapSource. Как я уже сказал, изображение динамично. Через событие из моего сканере отпечатков пальцев, следующий код называется:

private void HandleFingerprintObtainedEvent(Fingerprint fingerprint, FingerprintImage fingerprintImage) 
{ 
    Debug.WriteLine("New fingerprint found!"); 
    fingerprintScan = fingerprintImage; 
} 

Когда я запустить программу и нажать палец на читателе, новое изображение отпечатка пальца найден. Изменяется значение fingerprintScan. Но проблема в том, что до и после пальца на сканере растровое изображение пуст (белый?). Что я делаю не так? Нужно ли мне делать больше, кроме привязки данных, например, проверять события или что-то еще? Это проблема, когда источником привязки данных является BitmapSource вместо BitmapImage?

ответ

1

Вы не, извещая, что объект недвижимости изменен.

Класс, имеющий свойство FingerprintSource, должен реализовать интерфейс INotifyPropertyChanged. Затем вы можете использовать средство настройки свойств, чтобы поднять событие PropertyChanged. В противном случае привязка WPF не знает, что что-то изменилось.

Здесь у вас есть хорошая точка старта: WPF/MVVM Quick Start Tutorial

+0

Ok, поэтому я попробовал код из примера и мой 'RaisePropertyChanged' стреляют, когда я ввожу новое изображение. Как мне позволить привязке WPF знать, что это измененный Fingerprintscan, и соответственно обновить изображение в WPF? – Joetjah

+0

Во-первых, убедитесь, что ваше окно/страница WPF правильно настроено DataContext. Как только вы запускаете событие, привязка получает его и автоматически обновляет значение (в данном случае изображение). Если этого не происходит, посмотрите окно вывода, чтобы увидеть какие-либо проблемы с привязкой. – JoanComasFdz

+0

DataContext установлен правильно. Я использую другие значения для ComboBoxes и ListViews. Событие активируется, когда я нажимаю палец на сканер, и изображение обновляется (заменяется). Но тогда моя картина не освежена. Возможно, ошибка находится в 'RaisePropertyChanged (« fingerprintScan »);'? Какую строковую ценность мне нужно дать в качестве аргумента? – Joetjah

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