gpt4 book ai didi

wpf - 带有 AttachedProperty 的 PasswordBox 的错误模板

转载 作者:行者123 更新时间:2023-12-04 19:40:36 24 4
gpt4 key购买 nike

我知道 wpf 中的密码框无法使用 Validation.ErrorTemplate,无论如何我必须向用户展示,这是错误的。

我的密码箱有这样的绑定(bind)

 <PasswordBox Name="Password" local:PasswordHelper.Text="{Binding PasswordProp, Mode=TwoWay}" />

如果出现问题,是否有可能获得与此密码框的默认错误模板(红色边框)相同的样式?

这是我用于其他控件的错误模板

<Style x:Key="baseControlStyle">
<Setter Property="Control.FontFamily" Value="Verdana" />
<Setter Property="Control.FontSize" Value="12" />
<Setter Property="ToolTipService.ShowOnDisabled" Value="True" />

<Setter Property="Validation.ErrorTemplate" >
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<Image x:Name="Bild"
DockPanel.Dock="Right"
Source="../Resources/Nein.ico"
Margin="-5 0 0 0"
MaxHeight="16"
MaxWidth="16"
VerticalAlignment="Center"
ToolTip="{Binding ElementName=myControl, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}">
</Image>
<Border BorderBrush="Red" BorderThickness="1" CornerRadius="2">
<AdornedElementPlaceholder x:Name="myControl" />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="Control.ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>

谢谢

最佳答案

一个解决方案是在 PasswordBox 下放置一个实际的 TextBox 并将 Text 属性绑定(bind)到 PasswordProp也给 TextBox 错误模板:

<Grid>
<TextBox Template="{x:Null}" Style="{StaticResource baseControlStyle}" Text="{Binding PasswordProp, Mode=TwoWay}" />
<PasswordBox Name="Password" local:PasswordHelper.Text="{Binding PasswordProp, Mode=TwoWay}" />
</Grid>

由于 ErrorTemplate 的控件将放在装饰层上,因此您的错误模板将显示在 PasswordBox 事件的之上,尽管 TextBox 在 PasswordBox 的下方。

另请注意,我已将 TextBox 控件模板设置为 null。因为它不应该是可见的,所以不需要渲染。

关于wpf - 带有 AttachedProperty 的 PasswordBox 的错误模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7754496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com