gpt4 book ai didi

wpf - WPF 中的表单验证

转载 作者:行者123 更新时间:2023-12-03 10:51:15 26 4
gpt4 key购买 nike

我一直在使用 WPF 和 MVVM 模式有一段时间了。我很难让验证以“正常”的方式工作:

1) 我在 ViewModel 中实现了 IDataErrorInfo 接口(interface)。 XAML 看起来像:

<TextBox Grid.Column="1"
Grid.Row="1"
Text="{Binding Path=ProjectKey, ValidatesOnDataErrors=True, UpdateSourceTrigger=LostFocus}" />

这里的问题是,无论是否使用 LostFocus 和 PropertyChanged 触发器,文本框都会在用户选择该控件之前进行验证。这意味着如果我验证空字段,用户在第一次打开表单时会看到一大堆红色。理想情况下,只有在第一次“失去焦点”或“属性更改”之后,或者单击“提交”按钮后,才会验证输入。

2)另一个问题是当用户点击“提交”时最后的验证。在提交到数据库之前,您需要验证某些内容,例如重复项。我知道我可以使用 UpdateSourceTrigger=Explicit 并在所有控件上调用 UpdateSource 方法。我想知道在 MVVM 模式中是否有合适的方法来执行此操作。看起来这样的代码不应该在 ViewModel 中,因为它是 View 特定的......

任何想法都会很棒。我在网上搜索了很多,但似乎找不到合适的解决方案......

最佳答案

对于第一,您在 ViewModel 上的属性应该在构造函数中使用一个值进行初始化

public double Property1 {get; set;}

public ViewModel()
{
Property1 = 0;
}

对于第二个,在所有字段都通过验证之前,不应启用提交按钮。如果您有一个在数据库中唯一的字段,则在属性更改和显示时对其进行验证,如果未通过则显示错误。您可以拥有一个绑定(bind)到按钮的 IsEnabled 属性的 bool 属性,并在所有字段都通过验证后将其设置为 true。

关于wpf - WPF 中的表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2087036/

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