INotifyPropertyChanged – 事件保持为空

我正在尝试实现以下INotifyPropertyChanged扩展:

自动INotifyPropertyChanged (接受的答案) http://ingebrigtsen.info/2008/12/11/inotifypropertychanged-revisited/

但我无法弄清楚为什么我的PropertyChanged EventHandler保持为null。 🙁

我做了一个非常简单的WPF应用程序来测试它,这是我的XAML代码:

    

而我的代码背后:

 public partial class MainWindow : Window, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private TabAccount _selTabAccount; public TabAccount SelTabAccount { get { return _selTabAccount; } set { _selTabAccount = value; PropertyChanged.Notify(() => this.SelTabAccount); } } public MainWindow() { InitializeComponent(); SelTabAccount = new TabAccount() { Test = "qwer", TestRelated = "" }; } } public partial class TabAccount : INotifyPropertyChanged { private string _test; public string Test { get { return _test; } set { _test = value; PropertyChanged.Notify(() => this.Test); PropertyChanged.Notify(() => this.TestRelated); } } public event PropertyChangedEventHandler PropertyChanged; } public partial class TabAccount { private string _testRelated; public string TestRelated { get { _testRelated = Test + "_Related"; return _testRelated; } set { _testRelated = value; PropertyChanged.Notify(() => this.TestRelated); } } } 

在后面的代码中,您将看到一个类(它只是随机测试的部分),它有2个属性,应该通知属性更改但没有任何反应。

NotificationExtension是顶部提供的链接的复制和粘贴,位于外部cs文件中。

我也尝试使用“正常”的INotifyPropertyChanged实现进行示例,这可以按预期工作,但我无法通过此扩展类实现。

希望你能帮我搞清楚。 提前致谢。

仅当您向可视对象提供某些数据源时,绑定才有效。 如果您不提供任何数据源并且想要深入了解属性,则绑定将不起作用。

在MainWindow构造函数下,将Window的DataContext属性设置为数据源。 例如:

  public MainWindow() { InitializeComponent(); // your property setups this.DataContext = this; } 

实质上,这使得MainWindow属性可用于绑定到MainWindow项目的可视树。

您必须设置Window的DataContext。 您可以在initializecomponent之后在窗口的construnctor中执行此操作。

 this.DataContext = this; 

这应该可以解决问题。

谢谢