2012-02-14 98 views
0

我有我已綁定的「源」屬性頁面的相應的圖片「視圖模型」屬性名爲「捕捉」如下:沒有更新圖片來源動態

查看代碼:

<Image Height="150" HorizontalAlignment="Left" Margin="50,583,0,0" x:Name="img_FlickrPic" Stretch="Fill" VerticalAlignment="Top" Width="200" Grid.Row="1" Source="{Binding Capture}"/> 

相應的視圖模型代碼

公共類SubmitViewModel:ViewModelBase {

private CameraCaptureTask cameraCapture; 

    public ImageSource Capture { get; set; } 

    public RelayCommand CaptureCommand { get; set; } 

    /// <summary> 
    /// Initializes a new instance of the SubmitViewModel class. 
    /// </summary> 
    public SubmitViewModel() 
    {     
     Capture = new BitmapImage(); 
     CaptureCommand = new RelayCommand(() => CapturePhoto()); 
    } 

    private object CapturePhoto() 
    { 
     cameraCapture = new CameraCaptureTask(); 
     cameraCapture.Completed += cameraCapture_Completed; 
     cameraCapture.Show(); 
     return null; 
    }  

    void cameraCapture_Completed(object sender, PhotoResult e) 
    { 
     if (e == null || e.TaskResult != TaskResult.OK) 
     { 
      return; 
     } 

     BitmapImage bitmap = new BitmapImage(); 
     bitmap.SetSource(e.ChosenPhoto); 
     Capture = bitmap; 
    }    

} 

正如你所看到的,我已經爲視圖模型綁定了一個捕獲按鈕,並使用'behavior'而不是click事件來保持代碼的清潔。當我點擊按鈕時,相機被調用,一旦我點擊捕捉,然後按'接受'按鈕'cameraCapture_Completed'事件按預期觸發,並執行那裏的代碼。然而,設置'Capture'屬性(視圖上的圖像的Source屬性)的最後一步,我希望圖像能夠動態更新捕獲的照片。這不會發生。視圖模型繼承自'ViewModelBase',後者又實現INotifyPropertyChanged,所以不應該是一個問題。爲什麼用戶界面中的圖像沒有反映出'Capture'屬性的任何修改?我在這裏搞什麼?

謝謝!

回答

0

您必須手動提升屬性名稱爲「Capture」的ChangedPropertyEvent。像這樣的東西。

ImageSource mCapture; 
public ImageSource Capture { 
     get {return mCapture;} 
     set { mCapture = value; 
      RaiseChangedProperty("Capture"); 
      } 
} 
+0

Doh!萬分感謝 :) – Cranialsurge 2012-02-15 01:08:01