gpt4 book ai didi

wpf - IDataErrorInfo : How to know if all properties are valid?

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

我有一个 WPF使用 .Net 3.5 的应用程序(IDataErrorInfo)在 ViewModel 上验证输入。

效果很好,用户控件获得了正确的 UI 反馈。

问题是用户仍然可以更改所选元素,或保存此元素。

所以我的问题是:我怎么知道我所有的属性都是有效的?或者至少我所有显示的值都是有效的。目标是绑定(bind)一些IsActive在这个结果上

最佳答案

根据您对 IDataErrorInfo 实现的评论将您的实现更改为这种样式....

#region IDataErrorInfo Members

public string Error
{
get { return this[null] }
}

public string this[string columnName]
{
get
{
StringBuilder result = new StringBuilder();
if (string.IsNullOrEmpty(columnName) || columnName == "FirstName")
{
if (string.IsNullOrEmpty(FirstName))
result.Append("Please enter a First Name\n");
}
if (string.IsNullOrEmpty(columnName) || columnName == "LastName")
{
if (string.IsNullOrEmpty(LastName))
result.Append("Please enter a Last Name\n");
}
if (string.IsNullOrEmpty(columnName) || columnName == "Age")
{
if (Age < = 0 || Age >= 99)
result.Append("Please enter a valid age\n");
}
return (result.Length==0) ? null : result.Remove(result.Length-1,1).ToString();
}
}

#endregion


public bool IsValid {
get { return string.IsNullOrEmpty(this.Error); }
}

然后在您的属性(property)更改事件中
if (e.PropertyName == "Error") {
OnPropertyChanged(this,new PropertyChangedEventArgs("IsValid"));
}
if (e.PropertyName != "Error" && e.PropertyName != "IsValid") {
OnPropertyChanged(this,new PropertyChangedEventArgs("Error"));
}

关于wpf - IDataErrorInfo : How to know if all properties are valid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13603243/

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