Silverlight TabControl - 从TabItem中的给定Control中查找并选择TabItem

Dav*_*ght 6 silverlight tabcontrol tabitem

我正在构建一个LOB应用程序,它有一个主要部分和一个带有各种TabItems的TabControl.在点击保存时,想法是突出显示任何错误字段,错误的第一个字段获得焦点.

如果第一个也是唯一的错误字段位于"未选定"选项卡上,则应选中该选项卡,并且错误字段应突出显示并具有焦点.但我不能让这个工作.

似乎正在发生的事情是Unselected选项卡不在可视树中,因此您无法导航回拥有的TabItem并使其成为TabControl中当前选定的TabItem.

有没有人知道如何实现这一目标?

Dav*_*ght 1

我是如何解决这个问题的(通过询问首席架构师)......

使用一种方法 Activate 创建接口 ITabActivator。

创建一个从 Grid 和 ITabActivator 派生的类,名为 TabPageActivator。其构造函数采用 TabITem 和 TabControl。

添加 TabPageActivator,而不是向 TabItem.Contents 添加简单的 Grid。

将父级检测更改为使用...

DependencyObject 父 = _Control.Parent;

...而不是使用 VisualTreeHelper。

因此,当您浏览层次结构测试时...

if (父级是 TabActivator ) (父级是 ITabActivator).Activate( )

...所以当调用激活时

m_TabControl.SelectedItem = m_TabItem; // 来自构造函数参数。

...并且不要忘记您可能有嵌套选项卡,因此您需要继续向上移动层次结构。