c# - wpf 数据绑定(bind)不从属性更新

标签 c# wpf data-binding

我想根据所选电影在某些文本框中更新电影信息

我有

public Movie SelectedMovie { get; set; } 

在我的 View 模型中,这是我的数据上下文设置的位置

每当在我的列表中选择一部电影时,它都会更新“SelectedMovie”

但只有第一部电影更新文本 block

<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);
        }
    }
}

最佳答案

您必须在 SelectedMovie 属性的 setter 中触发 PropertyChanged 事件,以便通知绑定(bind)某些内容已更改:

private Movie selectedMovie;

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

关于c# - wpf 数据绑定(bind)不从属性更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4876307/

相关文章:

c# - 在 Unity 中创建程序网格生成器时出现尺寸问题

c# - StringBuilder 的 PInvoke 访问冲突

c# - WPF - 创建颜色网格

javascript - KnockoutJs ko.utils.arrayFirst 不允许重复值作为结果

c# - 绑定(bind)的默认 ValueConverter

c# - 设置构建顺序而不使用项目引用

c# - 一个按钮执行两个命令

WPF 将图像保存在内存中

c# - 简单的数据绑定(bind)不起作用

c# - 如何列出使用 .asmx Web 服务将项目添加到 Sharepoint 列表