我目前有一个选项卡控件,它包含多个选项卡项,其中每个选项卡项包含不同的自定义用户控件。,我希望当关联的选项卡包含验证失败时,选项卡头变成红色。我的验证是在适当的绑定上作为ValidationRules实现的(转移到IDataError或另一种验证方法并不是一个可行的解决方案)。每个选项卡特定的控件通过冒泡的ValidationErrorsEvent跟踪它的错误,并公开一个计数。
目前,我在选项卡特定控件上使用x:Name & ElementName在TabItem标头中将选项卡特定控件公开的计数绑定到标题中文本的颜色(通过转换器)。
<TabControl>
<TabItem>
<TabItem.Header>
<TextBlock Text="Tab 1" Foreground="{Binding Errors.Count, ElementName=_tabOne, Converter={StaticResource ErrorCountToColorConverter}}" />
</TabItem.Header>
<AdornerDecorator>
<my:CustomTabOneControl x:Name="_tabOne" />
</AdornerDecorator>
</TabItem>
<TabItem>
<TabItem.Header>
<TextBlock Text="Tab 2" Foreground="{Binding Errors.Count, ElementName=_tabTwo, Converter={StaticResource ErrorCountToColorConverter}}" />
</TabItem.Header>
<AdornerDecorator>
<my:CustomTabTwoControl x:Name="_tabTwo" />
</AdornerDecorator>
</TabItem>
</TabControl>由于WPFs选项卡控件的懒散性,在打开每个选项卡之前不会对每个选项卡进行验证。因此,包含无效字段的制表符的标题在打开选项卡之前不会变红(在此之后,它们保持正确)。
有人能提出解决这个问题的方法吗,或者用另一种方法来实现同样的标签突出显示?
https://stackoverflow.com/questions/16583183
复制相似问题