gpt4 book ai didi

wpf - 从 WPF 中的代码设置验证错误模板

转载 作者:行者123 更新时间:2023-12-04 02:39:14 24 4
gpt4 key购买 nike

我的 WPF 应用程序中有一个 TextBox。我为验证错误定义了一个 ControlTemplate,如下所示:

<ControlTemplate x:Key="validationTemplate">
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Bottom" Text="Invalid Input: "></TextBlock>
<AdornedElementPlaceholder />
</DockPanel>
</ControlTemplate>

我的文本框如下:
<TextBox Validation.ErrorTemplate="{StaticResource validationTemplate}">                                              
<TextBox.Text>
<Binding Path="TEXT1" ValidatesOnDataErrors="True" validatesOnExceptions="True">
</Binding>
</TextBox.Text>
</TextBox>

现在,如果我的 TextBox 添加了 ValidationRule 然后我在那里验证,错误模板将正确应用。但由于其他一些问题,我不能这样做。

所以我必须在 PreviewLostKeyboardFocus 中验证 TextBox 的内容。我正在验证文本框。现在我想在后面的代码中为 TextBox 设置错误模板,但我无法做到!

我试过了,但它没有按预期工作::
private void blockTextBox_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
TextBox txtBox = sender as TextBox;
txtBox.Template = this.FindResource("validationTemplate") as ControlTemplate;

//this behaves strange; it removes the TextBox and places the ErrorTemplate.
//I want it to behave like the way WPF does internally wherein it places
//the error template around TExtBox
}

问题1:我想知道如何将错误模板添加到TextBox

问题2:我想知道如何从代码中设置控件模板的错误信息。例如,我想将默认错误消息“无效输入:”更改为“无效输入:请输入正确的输入”。

我只想在代码后面做上面提到的事情!!!!

编辑 1:

问题是我如何从 Validation.HasError 后面的代码中设置为 true,因为我没有使用任何 Validator。 (或者我应该从应用 ValidationTemplate 背后的代码中设置什么??))

编辑 2:

我正在做 XML 绑定(bind),所以我无法实现 IDataErrorInfo !我只想从后面的代码中实现这一点!!有没有办法从后面的代码中设置 Validation.HasError ?

最佳答案

要在后面的代码中设置“Validation.HasError”,可以使用 Validation.MarkInvalid 方法

private void blockTextBox_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) 
{
TextBox txtBox = sender as TextBox;
//...
BindingExpression bindingExpression =
BindingOperations.GetBindingExpression(txtBox, TextBox.TextProperty);

BindingExpressionBase bindingExpressionBase =
BindingOperations.GetBindingExpressionBase(txtBox, TextBox.TextProperty);

ValidationError validationError =
new ValidationError(new ExceptionValidationRule(), bindingExpression);

Validation.MarkInvalid(bindingExpressionBase, validationError);
}

取消设置您使用的值
Validation.ClearInvalid

关于wpf - 从 WPF 中的代码设置验证错误模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4273899/

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