【问题标题】:Windows Phone 7 textbox validation using MVVM light使用 MVVM 灯的 Windows Phone 7 文本框验证
【发布时间】:2011-09-20 22:22:37
【问题描述】:

对于 WP7 7.0 应用 (SL3),执行此操作的最佳方法是什么。我应该使用视觉状态吗?有没有办法像 Silverlight 示例那样使用模型中的属性? MVVM+WP7 有什么好的例子吗?

目前我能找到的只有这两个例子。

http://babaandthepigman.wordpress.com/2010/10/21/simple-textbox-validation-wp7/ http://www.windowsphonegeek.com/articles/Building-WP7-Custom-Validation-Control---Architecture-amp-Basic-Prototype

【问题讨论】:

标签: validation windows-phone-7 mvvm-light


【解决方案1】:

对于每个视图,您应该创建名为 Validated(ViewName).cs 的文件。每个人都应该继承 ValidatedModelBase 实现的接口 INotifyPropertyChanged、INotifiDataError。

ValidationModelBase 的属性: 已验证 显示错误

方法: T ToModel - 将所有 ValidatedModel 字段转换为 ViewModel 无效验证:

public void Validate()
    {
        var fields = new List<string>();
        var type = this.GetType();
        var baseType = typeof(ValidatedModelBase<T>);

        while (type != baseType)
        {
            fields.AddRange(type.GetFields()
                .Where(field => field.FieldType == typeof(String) && field.Name.EndsWith("PropertyName"))
                .Select(field => field.GetValue(this) as String));

            type = type.BaseType;
        }

        foreach (var field in fields)
        {
            this.SetErrors(field, this.Validate(field), false);
        }

        this.RefreshIsValid();
    }

virtual IList Validate(string propertyName) - 它将在 ValidatedModels 中实现,您将属性名称作为参数进行验证,并在简单的 switch/case 指令中处理它。

如果你愿意,我可以写更多关于我的方法的内容。

【讨论】:

  • 我不完全明白。但是我是否正确,这个 dows 是使用模型的属性来确定如何验证每个字段?
  • 您总是将视图中的字段绑定到 ValidatedModel(绑定 VaildatedModel.FieldName)。
  • 我会尽力理解。如果您有任何示例代码,请告诉我。验证模型 = 视图模型?我只是想弄清楚这将如何与 WP7/MVVMLight 和一个简单的文本框和提交按钮一起使用。
  • 您将用户控件绑定到 ValidatedModel,然后从经过验证的模型将验证后的所有属性传递给 ViewModel。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多