WPF 错误验证不显示错误模板



我有一个类似的窗口

<Window.Resources>
<ControlTemplate x:Key="ValidationTemplate">
<DockPanel>
<TextBlock Foreground="Red" FontSize="20">!</TextBlock>
<AdornedElementPlaceholder/>
</DockPanel>
</ControlTemplate>
<Style x:Key="TextBoxInError" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<TextBox x:Name="SupportFolder"
Validation.ErrorTemplate="{StaticResource ValidationTemplate}"
Style="{StaticResource TextBoxInError}"
Padding="2">
<TextBox.Text>
<Binding Path="Preferences.SupportFolder" Mode="TwoWay" UpdateSourceTrigger="LostFocus">
<Binding.ValidationRules>
<local:FolderExistsValidationRule ValidationStep="RawProposedValue"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>

因此,我的印象是,当TextBox的输入出现错误时,TextBox的左侧会有一个红色的感叹号,并且由于Style触发,ToolTip会显示错误。ToolTip可以工作,但我看不到指示错误的感叹号。我从Microsoft Samples中获取了这段代码,但我一辈子都看不出我在哪里犯了错误。示例有效(数据绑定->BindingValidation(,但我似乎无法重现代码。有人会充当第二双眼睛,看到我做错了什么吗?

您应该将错误模板中的TextBlock停靠在左侧或右侧:

<TextBlock Foreground="Red" FontSize="20" DockPanel.Dock="Right">!</TextBlock>

使用您当前的标记,TextBlock将以";在";装饰元素。

相关内容

最新更新