2011-02-02 3 views
3

Я хочу movieinformation обновляется через несколько текстовых полей в зависимости от выбранного фильмаМОФ привязки данных не обновляется из свойства

Я имею

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, чтобы известить связыванию, что-то изменилось:

private Movie selectedMovie; 

public Movie SelectedMovie 
{ 
    get 
    { 
     return selectedMovie; 
    } 
    set 
    { 
     selectedMovie = value; 
     InvokePropertyChanged("SelectedMovie"); 
    } 
} 
Смежные вопросы