【问题标题】:How to do validation using mvvmcross如何使用 mvvmcross 进行验证
【发布时间】:2014-10-05 06:02:31
【问题描述】:

我刚刚开始学习使用 Xamarin 和 MvvmCross 编写移动应用程序。由于包括 YouTube 上 N+1 天的 MvvmCross 视频在内的大力支持,我发现学习基础知识非常容易(非常感谢 Stuart Lodge)。

但是,我正在努力处理估值数据。我希望 Stackoverflow 上的某个人可以指出一些有用的博客或教程的方向,以使用 MvvmCross 执行验证。我希望能够验证输入的数据,然后更新指示问题的视图。

我需要一些来自第一原则的东西,因为我不知道我不知道什么(如果这有意义的话)。我需要遵循一些最佳实践。

【问题讨论】:

    标签: validation xamarin mvvmcross


    【解决方案1】:

    数据验证可以以不同的方式显示在 UI 中。 例如,您可以显示一个消息框或显示一个标签。

    假设您希望在 UI 中的某处使用带有红色文本的标签来显示错误。

    我假设你的 UI 中有一个“保存”按钮或类似的按钮。

    您可以将按钮绑定到视图模型中的SaveCommand

    SaveCommand的实现中,您可以检查所有数据是否有效并设置Error字符串属性。

    您可以将标签的文本绑定到Error 属性。此外,您还可以将标签的可见性绑定到条件(错误!= null)。

    public class SettingsViewModel : MvxViewModel
    {
         string firstName;
         public string FirstName
         {
               get { return this.firstName; }
               set 
               { 
                  if(this.firstName != value) 
                  { 
                       this.firstName = value;
                       this.RaisePropertyChanged(()=> this.FirstName);
                       this.Error = null; // reset error
                  }
              }
         }
    
         public string Error { get; private set; }
    
         public ICommand SaveCommand { get { return new MvxCommand(this.Save); } }
    
         void Save()
         {
             // reset error
             this.Error = null; 
    
             if(string.IsNullOrEmpty(this.FirstName))
             {
                 this.Error = "First name is empty";
             }
    
             if(string.IsNullOrEmtpy(this.Error))
             {
                  // no error, save settings...
             } 
             else
             {
                this.RaisePropertyChanged(()=> this.Error);
             }
         }
    }
    

    【讨论】:

    • 谢谢安德烈,但我一直在寻找一个框架来做这件事,而不是自己动手。我应该在我原来的问题中更清楚。 MvvmCross 中是否内置了任何东西。我查看了验证插件,但没有关于如何使用它的示例。
    • 我用谷歌搜索过(我笑了!),只是没有我理解的使用示例。
    • 包含一个演示
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多