我在我的 WPF 应用程序中使用 MVVM 模式。我正在尝试缓存我的窗口以提高性能。为此,我从不关闭它们,只是隐藏而不是关闭。所有隐藏的窗口都存储在字典中,因此我可以重复使用它们。当窗口再次打开时,我创建一个新的视图模型并将其与缓存视图相关联。
但这有一个问题,因为隐藏窗口不断调用 ViewModels 中命令的 CanExecute 方法。当用户打开和关闭很多窗口时,这会导致性能问题。
当我将Window.DataContext
属性设置为 null 或者ClearValue(DataContextProperty)
我是否实现了我的目标时,但存在问题。如果我有任何两种方式绑定,它们都会在从数据上下文解除绑定期间触发。因此,我的视图模型中的某些值变为空。我不希望这样,因为在某些情况下,我会在隐藏视图后从 ViewModel 中读取属性。
你能帮我解决主要问题吗(不要从隐藏窗口调用 CanExecute 方法)。