【问题标题】:Windows 10 (Universal Windows App) data validationWindows 10(通用 Windows 应用)数据验证
【发布时间】:2015-12-29 19:43:23
【问题描述】:

我想弄清楚如何在 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); } }

}

问题:

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

【问题讨论】:

标签: c# wpf validation win-universal-app


【解决方案1】:

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

它比我在这里输入的任何东西都要好。

【讨论】:

    【解决方案2】:

    您可以在文本框内制作浮出控件。

    一旦文本框因输入错误而失去焦点,浮出控件就会出现。

    您可以在文本框的顶部/底部/侧面设置弹出窗口的位置。

    祝你好运!

    【讨论】:

      【解决方案3】:

      Prism 的问题在于它使用了字符串索引器。但是在 uwp 中绑定只是不允许字符串索引......仅限整数!还缺少一些关键功能,例如实体视图模型之间以及它们与上下文之间的协调。

      我已经做了一些研发,似乎以下是 uwp 中一个好的验证器的关键要素 - 使用字符串作为绑定目标,避免丢弃转换异常 - 将转换错误与验证错误分开跟踪 - 验证视图模型的基类和自动生成的指定属性名称的派生类 - 将多个视图模型绑定在一起的事件,以便 UI 的多个部分保持一致 - 集中的错误计数和与上下文相关的保存/恢复能力

      有什么可以做到的吗?如果是,那我还没找到。

      sjb

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-08
        • 2021-07-20
        • 2016-06-02
        • 1970-01-01
        • 1970-01-01
        • 2015-07-30
        相关资源
        最近更新 更多