c# - Windows 10(通用 Windows 应用程序)数据验证

标签 c# wpf validation win-universal-app

我想弄清楚如何在 UWP 下进行数据验证,但根据我的发现,基本上我还没有什么可以实现的。

因此,我尝试实现我的自定义验证逻辑。我现在遇到的问题是,我在一个 TextBlock 上显示错误信息,而不是直接在包含数据错误的特定 TextBox 下显示。

这就是我现在所做的:

public class Customer : ViewModel
{
    private string _Name = default(string);
    public string Name { get { return _Name; } set { SetProperty(ref _Name, value); OnPropertyChanged("IsValid"); } }


    private string _Surname = default(string);
    public string Surname { get { return _Surname; } set { SetProperty(ref _Surname, value); OnPropertyChanged("IsValid"); } }

    private DateTime _DateOfBirth = default(DateTime);
    public DateTime DateOfBirth { get { return _DateOfBirth; } set { SetProperty(ref _DateOfBirth, value); OnPropertyChanged("IsValid"); } }

    public int ID { get; set; }

    public bool IsValid
    {
        get
        {
            //restart error info
            _ErrorInfo = default(string);
            if (string.IsNullOrWhiteSpace(Name))
                _ErrorInfo += "Name cannot be empty!" + Environment.NewLine;

            if (string.IsNullOrWhiteSpace(Surname))
                _ErrorInfo += "Surname cannot be empty!" + Environment.NewLine;

            //raise property changed
            OnPropertyChanged("ErrorInfo");

            return !string.IsNullOrWhiteSpace(Name) &&
                !string.IsNullOrWhiteSpace(Surname);
        }
    }


    private string _ErrorInfo = default(string);
    public string ErrorInfo { get { return _ErrorInfo; } set { SetProperty(ref _ErrorInfo, value); } }

}

问题:

如何调整我的代码,这样我就可以在每个文本框下分配标签并在那里显示验证错误,而不是用一个标签包含所有错误信息?我应该为此使用字典吗?如果是,我如何将它绑定(bind)到我的 View ?

最佳答案

我很快成为了使用 Prism 的粉丝,请看这个精彩的演示 User input validation with Prism and data annotations on the UWP .

它比我在此处输入的任何内容都要好。

关于c# - Windows 10(通用 Windows 应用程序)数据验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892901/

相关文章:

c# - WPF跨线程对象访问

Javascript 表单验证,缺少什么?

javascript - Node + Json 验证键嵌套数组

c# - 杀死正在运行的程序的方法以及如何捕获它们?

c# - 如何在 gridview asp.net 中显示百分号

C# 字符串 : why string a == b operator gives different answer than a. CompareTo(b) == 0?

wpf - 使用 ObservableCollection 数据绑定(bind)从线程更新数据网格

c# - XAML 中的动画按钮背景颜色

wpf - ControlTemplate TargetType 与模板化类型不匹配

php - Laravel 规则只允许字母数字和 -(连字符)