首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在验证失败时突出显示选项卡标头

在验证失败时突出显示选项卡标头
EN

Stack Overflow用户
提问于 2013-05-16 09:02:15
回答 1查看 2.3K关注 0票数 3

我目前有一个选项卡控件,它包含多个选项卡项,其中每个选项卡项包含不同的自定义用户控件。,我希望当关联的选项卡包含验证失败时,选项卡头变成红色。我的验证是在适当的绑定上作为ValidationRules实现的(转移到IDataError或另一种验证方法并不是一个可行的解决方案)。每个选项卡特定的控件通过冒泡的ValidationErrorsEvent跟踪它的错误,并公开一个计数。

目前,我在选项卡特定控件上使用x:Name & ElementName在TabItem标头中将选项卡特定控件公开的计数绑定到标题中文本的颜色(通过转换器)。

代码语言:javascript
复制
<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选项卡控件的懒散性,在打开每个选项卡之前不会对每个选项卡进行验证。因此,包含无效字段的制表符的标题在打开选项卡之前不会变红(在此之后,它们保持正确)。

有人能提出解决这个问题的方法吗,或者用另一种方法来实现同样的标签突出显示?

EN

回答 1

Stack Overflow用户

发布于 2013-05-16 09:39:58

请看一下这篇文章和答案;它需要大量的工作和可能的维护,但是它确实可以通过使用基于控件的HasError属性设置标头模板的多触发器来工作。不幸的是,它要求您在每个控件的触发器中添加一个条件,以影响标头的状态。

您可以尝试将其与以下文章的答案结合起来:检测WPF验证错误

它遍历可视树以查找验证错误。因此,在构建UI时,它是动态的,并且减少了对维护触发器条件的依赖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16583183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档