【发布时间】:2015-05-21 05:52:58
【问题描述】:
我的 WPF 应用程序轮询一些外部硬件并使用绑定到 INotifyPropertyChanged 来显示数据更改。到目前为止它工作得很好,但我希望它在显示数据的控件“死”时暂停轮询,并在它们再次出现在屏幕上时继续。
如何更改数据源对象(目前只是一个INotifyPeropertyChanged 实现),以便它知道目标控件何时卸载?我可以让它在相应的PropertyChanged 事件之后的某个时间跨度内等待目标到get 他们的属性,但可能你有更好的建议。
【问题讨论】:
-
“死”是什么意思?控件/绑定通常根据需要从 PropertyChangedEvent 注册和注销。
-
说,我有两个 Windows 的 DataContext 设置为 INotifyPropertyChanged 对象。在这些窗口中,有两组不同的控件绑定到该对象的不同属性。如果任一窗口关闭,我需要停止为其控件轮询数据以节省带宽。
-
我刚刚尝试了自定义事件访问器,“值”中唯一相关的对象是 PropertyChangedEventManager 的一个实例,它似乎没有提供有关绑定目标的有用信息。
-
将 IsActive 之类的属性添加到绑定到 Windows 的 Visibility 或 OpenState 的 DataContext 中。也许你需要一个转换器。然后当 IsActive 被切换时,你开始/停止你的投票
标签: wpf data-binding object-lifetime