Привязка данных wpf не обновляется из свойства - PullRequest
3 голосов
/ 02 февраля 2011

Я хочу, чтобы информация о фильме обновлялась в некоторых текстовых полях в зависимости от выбранного фильма.

У меня есть

public Movie SelectedMovie { get; set; } 

в моей модели просмотра, что означает, что мой текст данных установлен в

И всякий раз, когда фильм выбирается в моем списке, он обновляет «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);
        }
    }
}

1 Ответ

4 голосов
/ 02 февраля 2011

Необходимо вызвать событие PropertyChanged в установщике свойства SelectedMovie, чтобы уведомить привязку о том, что что-то изменилось:

private Movie selectedMovie;

public Movie SelectedMovie
{
    get
    {
        return selectedMovie;
    }
    set
    {
        selectedMovie = value;
        InvokePropertyChanged("SelectedMovie");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...