首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Validation.HasError覆盖工具提示模板

使用Validation.HasError覆盖工具提示模板
EN

Stack Overflow用户
提问于 2014-10-30 22:02:32
回答 3查看 629关注 0票数 0

在我看过的任何地方,我都发现了一种标准的解决方案:将一个ToolTip附加到一个控件上,该控件的绑定具有Validation.HasError == true,但没有显示出如何完全覆盖工具提示的模板,这样,例如,您仍然可以拥有自己的自定义主题,该主题覆盖所有ToolTips的样式,但是当一个控件具有该特定条件时,您可以指定一个具有红色边框、红色透明背景和红色文本的模板。

标准解决方案是:

代码语言:javascript
复制
<Style x:Key="{x:Type FrameworkElement}" TargetType="FrameworkElement">
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="true">
            <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors).CurrentItem.ErrorContent}"/>
        </Trigger>
    </Style.Triggers>
</Style>

有人知道如何在不覆盖基本ToolTip控件样式的情况下扩展它来设置ToolTip的背景、边框和文本颜色吗?请记住,我已经指定了这个来创建我自己的“主题”,所以如果可能的话,我不想改变它。

EN

回答 3

Stack Overflow用户

发布于 2014-10-30 22:45:47

是的,你可以这样做:

代码语言:javascript
复制
<Style x:Key="{x:Type FrameworkElement}" TargetType="FrameworkElement">
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="true">
            <Setter Property="ToolTip">
                <Setter.Value>
                    <ToolTip Content="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors).CurrentItem.ErrorContent}" Style="{StaticResource MyInheritedStyleForValidation}"/>
                </Setter.Value>
            </Setter>
        </Trigger>
    </Style.Triggers>
</Style>

MyInheritedStyleForValidation可能会覆盖你的主题样式。

票数 2
EN

Stack Overflow用户

发布于 2015-05-13 05:31:29

将ToolTip的DataContext设置为父控件:

代码语言:javascript
复制
<Style.Triggers>
    <Trigger Property="Validation.HasError" Value="True">
        <Setter Property="ToolTip">
            <Setter.Value>
                <ToolTip Foreground="White"
                         Background="Black"
                         DataContext="{Binding Path=PlacementTarget, RelativeSource={RelativeSource Self}}"
                         Content="{Binding Path=(Validation.Errors)[0].ErrorContent}"/>
            </Setter.Value>
        </Setter>
    </Trigger>
</Style.Triggers>
票数 2
EN

Stack Overflow用户

发布于 2014-11-18 21:17:23

这将修复工具提示内容。

代码语言:javascript
复制
 <Style x:Key="{x:Type FrameworkElement}" TargetType="FrameworkElement">
    <Setter Property="ToolTip" Value="{Binding GeneralTooltip}"/>
       <Setter Property="Validation.ErrorTemplate" Value="{StaticResource ValidationTemplate}"/>            
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
             <Setter Property="ToolTip">
                    <Setter.Value>
                        <ToolTip  Style="{StaticResource WarningTooltip}"/>
                    </Setter.Value>
             </Setter>
                <Setter Property="Tag" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Style>

来自他的风格的工具提示模板:

代码语言:javascript
复制
<Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ToolTip}">                      
                                    <!--Display the text-->
                                    <Label Background="Transparent" 
                                         BorderThickness="0" 
                                         VerticalAlignment="Center"
                                         Grid.Column="1"                                            
                                         Content="{Binding Tag, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Control}, AncestorLevel=2}}"                                            
                                         BorderBrush="Transparent"/>
                </ControlTemplate>
            </Setter.Value>
 </Setter>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26655093

复制
相关文章

相似问题

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