c# - call property change 当它的属性更新时回调

标签 c# wpf uwp dependency-properties

我有一个具有某些属性的 A 类, 在 B 类中,我创建了 A 的对象并将其设为 DependencyProperty 并为其注册 propertyChangedCallBack。但它只是在重新创建 A 的对象时触发,而不是在更新时触发。 即使更改了 A 的子属性而不是整个对象,如何解决它被调用的问题?

最佳答案

没有内置的“深度链接”属性更改通知方式。你将不得不自己做。

您的 class A 可能包含另一个事件 Changed (只是一个例子;根据您的喜好命名),每当其中一个成员发生更改时都会引发该事件

public class A
{
  private string name;      
  public string Name
  {
    get { return this.name; }
    set 
    {
      if (value != this.name)
      {
        this.name = value;        
        this.RaiseChanged();
      }
    }
  }

  // ... more properties here ...

  public event EventHandler Changed;

  private void RaiseChanged()
  {
    this.Changed?.Invoke(this, EventArgs.Empty);
  }
}

public class B
{
  public A PropertyA { get; set; }
}

您的 B 类 然后必须订阅 PropertyAChanged 事件,然后通知外界关于 的更改属性A。请记住正确处理对 PropertyA 的更改。

仅出于通知目的,没有必要(也没有额外使用)使 PropertyA 成为 DependencyProperty,因此您可以坚持使用 INotyfyPropertyChanged

希望这对您有所帮助。

关于c# - call property change 当它的属性更新时回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40560812/

相关文章:

c# - 如何使用异步谓词过滤列表

c# - 如何防止 IIS 不将反斜杠更改为正斜杠

wpf - ListViewItem 自定义模板 : ContentPresenter stays empty

c# - 如何使用 WPF 和 .NET 3.5 注册一个全局热键来说 CTRL+SHIFT+(LETTER)?

c# - 在 C# 中实现可序列化类的首选方法是什么

C# - 从 WPF DataGrid 填充文本框

c# - 在 UWP 应用页面之间共享 xaml

windows - UWP 中的 X509Certificates

uwp - UWP 中的 web 隔间是什么意思?

c# - 一个网站是许多网络应用的集合?