2011-02-02 105 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"); 
    } 
}