如果未发生验证错误,如何在工具提示中显示文本框的文本。否则显示验证错误

时间:2012-01-05 10:12:26

标签: wpf validation c#-4.0 triggers

我有一个验证日期的文本框。

如果文本框有效,我想在文本框的工具提示中显示内容。否则,我想在工具提示中显示验证错误。

我在Text上设置了标准工具提示,并添加了几个触发器:

<MultiTrigger>
   <MultiTrigger.Conditions>
      <Condition Property="Validation.HasError"
                 Value="False" />
      <Condition Property="Text"
                 Value="" />
    </MultiTrigger.Conditions>
    <MultiTrigger.Setters>
       <Setter Property="ToolTipService.ToolTip"
               TargetName="DataTextBox"
               Value="{x:Null}"/>
    </MultiTrigger.Setters>
</MultiTrigger>

<MultiTrigger>
   <MultiTrigger.Conditions>
      <Condition Property="Validation.HasError"
                 Value="True" />
    </MultiTrigger.Conditions>
    <MultiTrigger.Setters>
       <Setter Property="ToolTipService.ToolTip"
               TargetName="DataTextBox"
               Value="{Binding (Validation.Errors)[0].ErrorContent}"/>
    </MultiTrigger.Setters>
</MultiTrigger>

我需要类似于否定条件的内容来检查文本框中是否添加了文本。

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

默认情况下,只需将工具提示绑定到TextBox's Text,如果项目有错误,请使用Trigger设置验证错误。

<Style x:Key="MyTextBoxStyle" TargetType="{x:Type TextBox}">
    <Setter Property="ToolTip" 
            Value="{Binding RelativeSource={RelativeSource Self}, Path=Text}" />

    <Style.Triggers>
       <Trigger Property="Validation.HasError" Value="True">
            <Setter Property="ToolTip" Value="{Binding 
                Path=(Validation.Errors)[0].ErrorContent, 
                RelativeSource={RelativeSource Self}}" />
        </Trigger>
    </Style.Triggers>
</Style>

此外,除非您评估多个条件,否则不应使用MultiDataTrigger