WPF立即绑定到所有TabControl TabItems

时间:2015-08-24 16:03:52

标签: c# wpf binding

我目前遇到的问题是我希望所有标签都立即绑定到我的ViewModel。出于某种原因,似乎WPF并没有绑定我的其他TabItem,直到我第一次选择它们。我渴望得到一个解决方案,因为我已经在其他选项卡上进行了验证。直到绑定发生在其他选项卡上,我的应用程序认为一切都是有效的。如果有帮助,我使用FluentValidation进行验证。

我尝试过使用某人的TabControlEx来判断这对我有帮助,但事实并非如此。在加载数据以强制绑定之后,我还试图遍历所有选项卡,但这并不总是在较慢的设备上工作。我也不是这个解决方案的粉丝。

1 个答案:

答案 0 :(得分:1)

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

WPF TabControl的默认样式仅包含一个ContentControl,用于显示所有选项卡。因此,根据需要创建表示标签内容的可视树;当内容/标签切换时,撕下来用新的可视树替换。

这里的常见问题是标签之间的切换变得缓慢,因此有几种解决方案:

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

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

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