WPF 立即绑定到所有 TabControl TabItems

WPF Immediate binding to all TabControl TabItems

我目前 运行 遇到一个问题,我希望我的所有选项卡立即绑定到我的 ViewModel。出于某种原因,在我第一次 select 之前,WPF 似乎不会绑定我的其他 TabItem。我渴望在这方面找到解决方案,因为我对其他选项卡进行了验证。在其他选项卡上发生绑定之前,我的应用程序认为一切都有效,但实际上并非如此。如果有帮助,我正在使用 FluentValidation 进行验证。

我试过使用某人的 TabControlEx 看看是否对我有帮助,但没有用。我还尝试在加载数据后循环浏览所有选项卡以强制绑定,但这并不总是适用于较慢的设备。我也不喜欢这个解决方案。

我不知道你为什么被否决,这似乎是一个有效的问题,但由于 TabControl 的性质,你仍然会得到一个模糊的答案:

WPF TabControl 的默认样式只包含一个用于显示所有选项卡的 ContentControl。因此,表示选项卡内容的可视化树是按需创建的;并在 content/tab 切换时被新的可视化树替换。

这里的常见问题是,在选项卡之间切换变得很慢,因此有几个解决方案:

但是,解决方案的情况是缓存了 ContentPresenters...但在用户首次点击选项卡之前它们仍然不会被创建。因此,您仍然会遇到同样的问题。

因此您需要进行某种架构更改。您需要在初始启动时从代码中的触发器验证您的视图模型集。等待选项卡控件呈现项目并不适合您。

您可能需要在视图模型层次结构中将错误向上冒泡,以显示在 TabItem.Header 或 window 本身中;也许您可能有一个 MainWindowViewModel,您可以在其中显示顶级错误。