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; } 
} 

WpfImageSourceBitmapSource이다. 제가 말했듯이, 이미지는 역동적입니다. 내 지문 판독기에서 이벤트를 통해, 다음 코드가 호출됩니다 :

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

내가 프로그램을 실행하고 독자에 내 손가락을 눌러

는 새로운 지문 이미지가 발견된다. 값 fingerprintScan이 변경됩니다. 그러나 문제는 스캐너 위에 손가락을 넣기 전후에 비트 맵이 비어 있습니다 (흰색?). 내가 도대체 ​​뭘 잘못하고있는 겁니까? 이벤트 등을 확인하는 것과 같은 데이터 바인딩 이외에 더 많은 작업을 수행해야합니까? 데이터 바인딩 소스가 BitmapImage 대신 BitmapSource 일 때 문제가됩니까?

답변

1

귀하는 이 아니며, 해당 속성이 변경되었음을 알리는 메시지가이 아닙니다.

FingerprintSource 속성이있는 클래스는 INotifyPropertyChanged 인터페이스를 구현해야합니다. 그런 다음 속성 설정기를 사용하여 PropertyChanged 이벤트를 발생시킬 수 있습니다. 그렇지 않으면 WPF 바인딩은 무언가가 변경되었음을 알지 못합니다. 여기

는 당신이 좋은 시작점이 있습니다 WPF/MVVM Quick Start Tutorial

+0

확인을, 그래서 예로부터 코드를 해봤 내'나는 새로운 이미지를 삽입 할 때 RaisePropertyChanged'이 발사되고있다. WPF 바인딩이 변경된 Fingerprintscan임을 알리고 어떻게하면 WPF에서 이미지를 새로 고칠 수 있습니까? – Joetjah

+0

먼저 WPF 윈도우/페이지에 DataContext가 올바르게 설정되어 있는지 확인하십시오. 이벤트를 실행하자마자 바인딩이 이벤트를 받으면 자동으로 값 (이 경우 이미지)을 업데이트합니다. 이것이 일어나지 않는다면 출력 창을보고 바인딩 문제를 확인하십시오. – JoanComasFdz

+0

DataContext가 올바르게 설정되었습니다. ComboBoxes 및 ListViews에 다른 값을 사용하고 있습니다. 스캐너에서 손가락을 눌러 이벤트가 트리거되고 이미지가 새로 고침 (교체)됩니다. 그러나 그런 다음, 내 그림은 새로 고쳐지지 않습니다. 아마도이 오류는 RaisePropertyChanged ("fingerprintScan"); 논리적으로 어떤 String 값을 주어야합니까? – Joetjah