WPF ValidationRules不会在加载时触发

Xaphann

我有ValidationRules一个文本框;

<TextBox Margin="5,5,5,0" Name="myTextBox" >
<Binding Path="myID" NotifyOnValidationError="True" ValidatesOnDataErrors="True" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"  >
    <Binding.ValidationRules>
        <local:ValueCannotBlankValidator ValidatesOnTargetUpdated="True"  />
    </Binding.ValidationRules>
</Binding>

现在,如果用户在文本框中更改值,则此方法有效。它不会在加载时触发的问题。认为这是更改UpdateSourceTrigger="PropertyChanged"的简单解决方案,UpdateSourceTrigger="LostFocus"但会导致ValidationRules不触发。谢谢您的帮助。

肯尼兹

如果您设置UpdateSourceTrigger="LostFocus",则验证发生在输入焦点设置为另一个控件时,另一方面,UpdateSourceTrigger="PropertyChanged"每次更改文本时都会触发,其行为类似于TextBox的TextChanged事件。

ValidatesOnTargetUpdated="True"确保文本在加载时经过验证,您的XAML代码正确。如果在ValueCannotBlankValidator.Validate方法中设置断点,则可能会发现它实际上是在加载时触发的。

我怀疑你的验证器返回valid的第一验证结果,在那一刻TextBox的Text属性是null,如果你比较null反对string.Empty (""),你会得到不正确的结果。

public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
    ValidationResult trueResult = new ValidationResult(true, "not blank");
    string str = value as string; //value is null on load, don't compare it against ""
    if (string.IsNullOrEmpty(str))
        return new ValidationResult(false, "blank");
    else
        return trueResult;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

appRouter 不会在加载时触发

WinForm 托管的 ComboBox 离开事件不会在 WPF 中触发

C# WPF 绑定值不会在用户控件中触发动画

ValidationRules失败时不触发WPF TextBox IValueConverter ConvertBack

WPF实体框架外键不会在DataGrid中加载其值

Angular MatTabChangeEvent不会在页面加载时触发

触发 shopify 的 onclick 而不会在页面加载时发生

DataGridView不会在WPF中单击按钮时更新值

WPF ListView不会在PropertyChanged上更新

WPF:字体不会在打印的FlowDocument上更改

观察者订阅不会首次加载,也不会在首次加载组件时触发

过渡不会在悬停时触发

触摸WPF按钮有时不会在Windows 8下调用点击处理程序

复选框不会在页面加载时触发功能

新窗口加载永远不会在 javascript 中触发

asp.net Repeater Button不会在首页加载时触发事件,但在回发后会触发

GoogleMaps不会在页面加载时加载

预加载器不会在加载时停止

当应用程序为64位时,Wix Toolset不会在64位“程序文件”文件夹中安装WPF应用程序

WPF Textblock文本不会在组合框所选项目上动态更改

WPF ListBox多项选择不会在模型上引发SelectedItem

FromBluetoothAddressAsync永远不会在WPF应用程序中的Windows 10 Creators Update上返回

LiveChart不会在X轴WPF上显示所有标签

Vue转换不会在单击按钮时触发

ListSelectionListener不会在调用setSelected方法时触发事件

共享的偏好值不会在触发时更改

Android OnClickListener不会在首次点击时触发

Xamarin 命令不会在按钮单击时触发

document.getElementById()。onClick()不会在点击时触发