2

我在说什么

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

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

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

我想做的事

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

我发现了一个不好的解决方案

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

看这个问题的另一种方式

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

欢迎任何帮助!

4

1 回答 1

1

如果您的“嵌套”已实现 INotifyPropertyChanged,您可以在视图模型中订阅其 PropertyChanged 事件。当任何属性(包括对象)发生变化时,您都会收到通知

于 2013-08-31T03:07:45.083 回答