当深度嵌套的属性发生更改时,使用WPF绑定获取回调

本文关键字:使用 WPF 绑定 回调 获取 嵌套 深度 属性 | 更新日期: 2023-09-27 18:29:46

我在说什么

在WPF表单上,我可以为深度嵌套的对象创建一个简单的WPF绑定:

<TextBox Name="TextBox1" Text="{Binding Path=Very/Deeply/Nested/Object}"></TextBox>

当层次结构中的任何属性发生更改时,TextBox1将自动更新。因此,例如,如果对象"Very"的属性"Deep"发生更改,WPF将取消订阅前一项,并订阅新的层次结构。最终将更新Text属性。

我想做什么

在C#方面,当"Object"更改时,我需要获得回调。但是,我不需要在任何WPF控件中显示对象。此外,我不想手动订阅/取消订阅整个层次结构,如何使用C#中WPF的订阅机制从深度嵌套的对象属性中获取回调?

我发现了一个糟糕的解决方案

我可以使TextBox1不可见(因为我实际上不需要显示该信息),并订阅它的TextChanged事件。这很简单,可能会奏效,但看起来确实是一种糟糕的方法。。。

查看此问题的另一种方法

你能在控件属性之外的其他东西上使用绑定机制吗?IDK,我可以创建某种非静态的、不断订阅的资源吗?该资源将使用指定的绑定,我可以从该资源中订阅一个"已更改"的事件。

欢迎任何帮助!

当深度嵌套的属性发生更改时,使用WPF绑定获取回调

如果您的"Nested"是INotifyPropertyChanged实现的,则可以在视图模型中订阅其PropertyChanged事件。当任何方面发生更改时,您都会收到通知,包括Object