2013-02-26 55 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正在更改。但問題是,在將手指放在掃描儀之前和之後,位圖是空的(白色?)。我究竟做錯了什麼?除了數據綁定之外,我還需要做更多的事情,比如檢查事件或其他事情嗎?當數據綁定的來源是BitmapSource而不是BitmapImage時,這是一個問題嗎?

回答

1

你是不是通知財產已經改變。

具有de FingerprintSource屬性的類必須實現接口INotifyPropertyChanged。然後你可以使用屬性設置器來提高PropertyChanged事件。否則WPF綁定不知道有什麼改變。

這裏有一個很好的起點:WPF/MVVM Quick Start Tutorial

+0

好了,我已經從示例,並試圖代碼我'當我插入一個新的形象RaisePropertyChanged'被解僱。我如何讓WPF綁定知道它是已更改的Fingerprintscan,並相應地刷新WPF上的圖像? – Joetjah 2013-02-26 11:42:09

+0

首先,確保您的WPF窗口/頁面具有正確設置的DataContext。只要您觸發事件,綁定就會收到它並自動更新值(在本例中爲圖像)。如果沒有發生,請查看輸出窗口以查看任何綁定問題。 – JoanComasFdz 2013-02-26 11:46:52

+0

DataContext設置正確。我使用ComboBoxes和ListViews的其他值。當我按下掃描儀上的手指並刷新(替換)圖像時,事件也會被觸發。但是,我的照片沒有刷新。也許錯誤在'RaisePropertyChanged(「fingerprintScan」);'?我必須給出什麼字符串值作爲參數? – Joetjah 2013-02-26 12:33:46