【问题标题】:Make binding source aware of binding targets death让绑定源知道绑定目标死亡
【发布时间】: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


【解决方案1】:

如果任一窗口关闭,我需要停止为其控件轮询数据以节省带宽

无论轮询如何工作,您都需要创建一个标志,可能在您的虚拟机上,它将识别操作是否应该运行。轮询需要轮询该标志以运行或不运行,具体取决于它/窗口的状态。

订阅窗口的关闭事件并相应地更新 flag 这将随后停止轮询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-21
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多