我在说什么
在WPF表单中,我可以为深层嵌套的对象创建一个简单的WPF绑定:
<TextBox Name="TextBox1" Text="{Binding Path=Very/Deeply/Nested/Object}"></TextBox>
当层次结构中的任何属性发生更改时,TextBox1将自动更新。因此,例如,如果对象'Very'的属性'Deeply'发生更改,WPF将取消订阅前一项,并订阅新的层次结构。最终将更新Text属性。
我想做什么
在C#方面,我需要在'Object'更改时获得回调。但是,我不需要在任何WPF控件中显示对象。另外,我不想手动订阅/取消订阅整个层次结构,如何在C#中使用WPF的订阅机制从深层嵌套的对象属性中获取回调?
我发现了一个糟糕的解决方案
我可以使TextBox1不可见(因为我实际上不需要显示该信息),并订阅它的TextChanged事件。这很简单,它可能会起作用,但它看起来确实是一种糟糕的方法......
查看此问题的另一种方法
你可以在除控件属性之外的其他东西上使用绑定机制吗? IDK,我可以创建某种非静态和不断订阅的资源吗?该资源将使用指定的绑定,我可以订阅该资源的单个“已更改”事件。
欢迎任何帮助!
答案 0 :(得分:1)
如果你的'Nested'是INotifyPropertyChanged实现的,你可以在viewmodel中订阅它的PropertyChanged事件。当包括对象
在内的任何属性发生变化时,您将收到通知