当数据被验证时,它显示为false,因此textbox属性将被更改,并显示错误。
当数据有效时,是否可以进行相反的操作?文本框将变为绿色,并且(复选标记)将出现在文本框旁边。

Xaml
<Window.Resources>
<ControlTemplate x:Key="eTemplate">
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Right" Foreground="Blue" FontSize="13" Text="{Binding ElementName=adorned,Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" >
</TextBlock>
<Border BorderBrush="Red" BorderThickness="2">
<AdornedElementPlaceholder x:Name="adorned"/>
</Border>
</DockPanel>
</ControlTemplate>
</Window.Resources>发布于 2015-12-31 17:42:41
还没有尝试过这种方法,但我认为最好的方法是继续使用常规的文本框模板,以显示绿色边框和复选框。
默认情况下,将边框和复选框不可见。
当没有焦点并且用户已经在文本框中输入了一些内容时,使用触发器来显示内容。
像这样吗?:
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsFocused" Value="False" />
<Condition Property="Text" Value="" />
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="border" Value="Visible" />
<Setter Property="Visibility" TargetName="checkmark" Value="Visible" />
</MultiTrigger>
</ControlTemplate.Triggers>参考条款
控件模板可能如下所示:
<TextBox.Template>
<ControlTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="107*"/>
<ColumnDefinition Width="23*"/>
</Grid.ColumnDefinitions>
<TextBox Grid.ColumnSpan="1" />
<Border Name="border" BorderBrush="DarkGreen" BorderThickness="1" Grid.ColumnSpan="1" Visibility="Hidden">
</Border>
<Image Name="checkmark" Grid.Column="1" Source="Images/check_48.ico" Grid.ColumnSpan="2" Visibility="Hidden" />
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="border" Value="Visible" />
<Setter Property="Visibility" TargetName="checkmark" Value="Visible" />
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</TextBox.Template>在我的示例中.我有边框,只有当鼠标在item...You上时,才会显示它,当它不是empty...and时,它就不会像上面那样聚焦。
https://stackoverflow.com/questions/34549707
复制相似问题