gpt4 book ai didi

c# - 如何在代码隐藏中设置 Validation.ErrorTemplate?

转载 作者:行者123 更新时间:2023-11-30 22:20:09 25 4
gpt4 key购买 nike

我一直在 StackOverflow 中查找,并完成了几个问题。但它们不起作用。

我有这个密码框:

<PasswordBox Width="160"
HorizontalAlignment="Left"
Margin="10,3"
Name="textBoxUserPass"
local:PasswordBoxAssistant.BindPassword="True"
local:PasswordBoxAssistant.BoundPassword="{Binding Path=Password, UpdateSourceTrigger=Explicit,
ValidatesOnDataErrors=True, ValidatesOnExceptions=True}"
Validation.ErrorTemplate="{x:Null}" />

我首先设置了 ValidationErrorTemplate="{x:Null}" 所以我第一次加载 PasswordBox 它不会尝试验证框。

当我发现错误时,我会尝试更改 Validation.ErrorTemplate,使其显示红色边框(如我定义的 ErrorTemplate 所示):

BindingExpression bePassword = textBoxUserPass.GetBindingExpression(PasswordBoxAssistant.BoundPassword);
if (bePassword != null)
{
bePassword.UpdateSource();
if (bePassword.HasError)
{
var validationError = new ValidationError(new ExceptionValidationRule(), bePassword);
Validation.MarkInvalid(bePassword, validationError);
validationError.ErrorContent = Cultures.Resources.MessageNoPassword;
var b = Resources["validationTemplate"] as ControlTemplate;
Validation.SetErrorTemplate(textBoxUserPass, b);
}
}
}

我在 ResourceDictionary.xaml 上定义了我的 validationTemplate,如下所示:

    <Style x:Key="validationTemplate" TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Right"
Foreground="Red"
FontSize="12pt">
*
</TextBlock>
<Border BorderBrush="Red" BorderThickness="1" CornerRadius="5">
<AdornedElementPlaceholder />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

如您所见,一个普通的盒子。

我的问题出现在试图找到此资源以更改代码隐藏中的Validation.ErrorTemplate 时。我放了一个断点,这一行:

var b = FindResource("validationTemplate") as ControlTemplate;

表示 b 为空。我如何找到 "validationTemplate" 并使用它??

最佳答案

您的 validationTemplate 是一个带有 TemplateStyle。仅尝试 Template:

<ControlTemplate x:Key="validationTemplate">
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Right"
Foreground="Red"
FontSize="12pt">
*
</TextBlock>
<Border BorderBrush="Red" BorderThickness="1" CornerRadius="5">
<AdornedElementPlaceholder />
</Border>
</DockPanel>
</ControlTemplate>

关于c# - 如何在代码隐藏中设置 Validation.ErrorTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15117164/

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