如何检测Windows运行时中的属性更改

本文关键字:属性 运行时 Windows 何检测 检测 | 更新日期: 2023-09-27 18:02:02

以前在Windows Phone Silverlight应用程序中,我们可以实现INotifyPropertyChanged并提高它:

    public int Id
    {
        get { return id; }
        set
        {
            if (value != id)
            {
                id = value;
                NotifyPropertyChanged("Id");
            }
        }
    }

目前,在Windows Runtime App的默认hub模板中,我看到我们使用

public ObservableCollection<Item> Items{ get; set; }

它将只检测一个项目的集合添加或删除,但如何改变一个现有的项目的属性?我更改了一个项目的属性,但它没有生效。怎么了?谢谢。

更新:我看到我们仍然可以这样做并且工作。但这是在Windows运行时应用程序中推荐的方法吗?

如何检测Windows运行时中的属性更改

在您的Item类中,您希望在该类中实现INotifyPropertyChanged。任何你想修改现有项目的属性将通过调用RaisePropertyChanged()事件反映到UI。

public class Item : INotifyPropertyChanged
{
  // Omitted implementation of INPC
  private string _name;
  public string Name { get { return name; } set { _name = value; RaisePropertyChanged(); } }
  public void Update()
  {
     Name = "NewValue"; // This will show up in the UI if it is bound to a property (DataBinding)
  }
}