【问题标题】:Silverlight control's input validationSilverlight 控件的输入验证
【发布时间】:2012-04-04 18:57:07
【问题描述】:

我想在我的 silverlight 应用程序中实现两种类型的验证。我希望在视图模型中实现“业务逻辑”规则(比如结束日期不早于开始日期)我已经完成,以及 输入验证 在 main 的某个地方控制,输入字段在哪里(比如日期格式错误)。 Silverlight 有什么可以“帮助”我的吗?我的意思是我至少有 UnsetValue ,但是是否有任何相关的事件或者我必须捕获所有 OnChanged 事件?还有一种方法可以在我想要的时候手动在控件周围显示红色边框吗?

抱歉,我的问题并不明显,但我完成了包含“业务逻辑”规则的部分 - 我的视图模型确实实现了 INotifyDataErrorInfo,我对第二种类型的验证感到困扰。

【问题讨论】:

    标签: silverlight validation mvvm


    【解决方案1】:

    在您的 ViewModel 上实现 INotifyDataErrorInfo 以启用 View Model 级别的验证。

    【讨论】:

      【解决方案2】:

      在你的属性上实现 INotifyDataErrorInfo

      然后在 XAML 中绑定的属性上使用友好的显示名称:

      private DateTime? _datumP = DateTime.Now;
      [Display(Name = "Date", ResourceType = typeof(CommonExpressions))]
      public DateTime? DatumP
      {
          get
          {
              return _datumP;
          }
          set
          {
              if (_datumP != value)
              {
                  _datumP = value;
                  RaisePropertyChanged(DatumPonudbePropertyName);
              }
      
              ValidateDate(DatumPonudbe, DatumPonudbePropertyName);
          }
      }
      

      然后是您验证日期的方法:

       public void ValidateDate(DateTime? value, string propertyName)
       {
           RemoveError(propertyName, CommonErrors.DatumNull_ERROR);
      
           if (value == null)
               AddError(propertyName, CommonErrors.DatumNull_ERROR, false);
      
       }
      

      现在是 XAML 部分:

      <sdk:DatePicker Width="100" SelectedDate="{Binding DatumP, Mode=TwoWay, 
                                  NotifyOnValidationError=True, ValidatesOnNotifyDataErrors=True, 
                                  ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" />
      

      附言

      CommonExpressions 和 CommonErrors 是我的多语言资源文件,你可以在这里使用纯字符串。

      【讨论】:

        猜你喜欢
        • 2010-12-28
        • 2014-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-24
        • 1970-01-01
        相关资源
        最近更新 更多