2011-02-02 83 views
3

我想movieinformation在根據所選擇的電影WPF數據綁定不是從屬性更新

public Movie SelectedMovie { get; set; } 

在我的ViewModel這就是我的DataContext設置在

一個有些文本框更新

每當在我的列表中選擇一部電影時,它會更新「SelectedMovie」

但是隻有第一部電影更新文本塊

<TextBlock Grid.ColumnSpan="2" Text="{Binding Path=SelectedMovie.Name}" FontSize="17" /> 

(所選擇的一個時,應用程序加載)

所以真的不知道爲什麼它不更改文本,當我在列表中選擇一個新的電影嗎?

電影類:

using System; 
using System.ComponentModel; 

namespace MovieDB3.Models 
{ 
    class Movie : INotifyPropertyChanged 
    { 
     public Movie(string name) 
     { 
      this.name = name; 
     } 

     private string name; 
     public string Name 
     { 
      get { return name; } 
      set 
      { 
       name = value; 
       InvokePropertyChanged("Name"); 
      } 
     } 
     public int Id { get; set; } 
     private double rating; 
     public double Rating 
     { 
      get { return rating; } 
      set 
      { 
       rating = value; 
       InvokePropertyChanged("Rating"); 
      } 
     } 

     public DateTime Release { get; set; } 
     public TimeSpan Runtime { get; set; } 
     public String Trailer { get; set; } 

     public event PropertyChangedEventHandler PropertyChanged; 

     private void InvokePropertyChanged(String propertyName) 
     { 
      PropertyChangedEventArgs e = new PropertyChangedEventArgs(propertyName); 
      PropertyChangedEventHandler changed = PropertyChanged; 

      if (changed != null) changed(this, e); 
     } 
    } 
} 

回答

4

你不得不解僱PropertyChanged事件在SelectedMovie setter方法,以便通知綁定的東西發生了變化:

private Movie selectedMovie; 

public Movie SelectedMovie 
{ 
    get 
    { 
     return selectedMovie; 
    } 
    set 
    { 
     selectedMovie = value; 
     InvokePropertyChanged("SelectedMovie"); 
    } 
}