如果数据绑定控件不可见,则不应更新

And*_*erd 9 data-binding wpf

我有一个WPF应用程序,设计遵循标准的MVVM模型.

当基础数据发生更改时,我的视图模型会触发PropertyChanged事件,以便控件可以更新.

我的主视图是一个制表符控件,因此大多数控件在任何时候都是不可见的.存在性能问题,我意识到大部分CPU时间专用于获取数据以更新不可见控件.(我的视图模型使用延迟评估,因此它会触发PropertyChanged事件,但在询问之前实际上并不计算最终的可显示属性).

WPF是否有标准的方法来处理这个问题?

理想情况下,如果一个不可见的控件收到一个相关的PropertyChanged事件,它应该只是想"我必须重新查询该属性一旦我再次可见 ".

Ric*_*key 1

我认为没有任何基础设施可以处理与不可见控件相关的停用绑定。不幸的是,在很多情况下,您可能需要一个不可见的控件来参与数据绑定。最重要的是,您通常有一个控件,其可见性本身取决于绑定。此外,可见控件和不可见控件的属性之间可能存在绑定。或者有人可能想要与您想要的完全相反:控件在不可见时填充自身,然后在可见时跳出完全填充。

我认为针对您的情况唯一好的解决方案是避免使用重量级不可见控件(如果可能的话)。特别是对于您的选项卡控件,我认为这将是默认行为,但也许这取决于您的情况。具有讽刺意味的是,有些人抱怨TabControl在选项卡之间切换时会破坏其子选项,并且想知道如何防止这种情况,因为将所有后台选项卡保留在内存中需要一些工作。但你似乎有相反的问题。

作为参考,这是我为儿童提到的来源TabControl

您也许可以在一个小项目中进行一些实验,以“打开”他们试图关闭的回收行为。如果您的控件是按需加载的,那么选项卡切换可能会稍微慢一些,但选项卡上的性能会提高。