2012-11-13 38 views
1

我的用戶界面很簡單。在Silverlight 5.0應用程序中,我使用MVVM,並讓用戶添加許多文本框,因爲他想添加ObservableCollection<Model>Button如何驗證Silverlight中的用戶界面?

Model只有一個屬性,其數據類型是integer

該模型的數據模板只是一個簡單的文本框。

<TextBox Text="{Binding Number}" /> 

這樣的想法是,當所有的文本框沒有任何錯誤,指令有效,但如果任何模型有一個錯誤,該命令應禁用。

如何實現此驗證? 在此先感謝。

回答

1

你可以簡單地拋出一個異常,在適當的property`s二傳手:

public int Number 
{ 
    get {//...} 
    set { 
      if(value >= 10) 
      throw new Exception("Number should be less than 10"); 
      _number = number; 
     } 

} 

和你的結合應該是:

<TextBox Text="{Binding Number, Mode="TwoWay" ValidateOnExceptions="True"}" /> 

FrameworkElement的有BindingValidationErrorEvent,可用於實現啓用/禁用命令邏輯。請記住將NotifyOnValidationError設置爲True以便進行綁定。

p.s.Also,我建議你閱讀INotifyDataErrorInfo

+0

喔我明白了,這最後的接口,我可以在我的ViewModel檢查,如果我的模型有錯誤嗎? –

+0

如果您在'Model'類中實現INotifyDataError或setter(如下例所示),那麼您可以驗證它。 –