2011-10-24 152 views
3

我正在使用公開依賴項屬性的密碼箱,以便我可以綁定到它。問題是,通過使用它像這樣,我不能速記Binding.ValidationRules這句法:將驗證規則添加到單個xaml行或速記驗證規則

<PasswordBox services:RPLPasswordBoxBinder.BindPassword="True" 
      services:RPLPasswordBoxBinder.BoundPassword="{Binding Path=LoginUser.Parola, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> 
</PasswordBox> 

設置我ValidationRules到這樣一個文本框:

<TextBox.Text> 
    <Binding Path="LoginUser.Parola" UpdateSourceTrigger="PropertyChanged"> 
     <Binding.ValidationRules> 
      <some validation rule/> 
     </Binding.ValidationRules> 
    </Binding> 
</TextBox.Text> 

有什麼辦法在一個單獨的xaml行中指定ValidationRules集合到我的密碼箱?或者,也許有另一個聰明的解決方案來驗證用戶輸入到我的密碼框?

一些說明: 我正在使用MVVM,我不想使用後面的代碼。

我想只添加一個ValidationRule。也許與縮短Binding.ValidationRules的問題是,此屬性是一個集合。一個驗證規則就足夠了我的情況。

在stackoverflow上有類似的問題here。我問了一個類似的問題,因爲我的代表不允許我在那裏發表評論,而且我的問題有所不同,因爲我不只是想增加可讀性,而是實際驗證了我的密碼箱。

非常感謝提前!

回答

0

我建議您將您的數據模型類基於IDataErrorInfo,然後在那裏執行驗證,而不是在後面的代碼中進行驗證。

有很多例子,但是here's one for starters和另一個here

+0

工作就像一個魅力。不過,對於初學者,我會建議[這個msdn鏈接](http://msdn.microsoft.com/en-us/library/system.componentmodel.idataerrorinfo(v = vs.95).aspx)。我發現它更容易閱讀和重現。 –