2010-05-03 98 views
0

我有一個用戶控件,其中包含一個邊框。我能夠編輯用戶控制寬度和邊框寬度綁定到兩個文本框。我需要在代碼中創建綁定時包含驗證,以便邊框寬度不能高於用戶控件寬度。WPF驗證兩個屬性

回答

0

我解決了我的問題,這很容易,我想刪除我的問題比迴應更好,但也許有人會發現這有用。

class MyUserControlValidationRule : ValidationRule 
{ 
    private MyUserControl _control; 
    public MyUserControlValidationRule(MyUserControl control) 
    { 
     _control = control; 
    } 

    public override ValidationResult Validate(object value, CultureInfo cultureInfo) 
    { 
     int parameter = 0; 
     try 
     { 
      if (((string)value).Length > 0) 
      { 
       parameter = int.Parse((String)value); 
      } 
     } 
     catch (Exception e) 
     { 
      return new ValidationResult(false, "Illegal characters or " + e.Message); 
     } 

     if (parameter >= _control.Width) 
     { 
      return new ValidationResult(false, "Border width is bigger that the control width."); 
     } 
     return new ValidationResult(true, null); 
    } 
} 
0

使用依賴項屬性可以實現此目的。在邊框寬度上創建一個依賴項屬性,並且當這個屬性發生變化時,它將被調用,並且你可以檢查寬度是否大於用戶控件的寬度,如果它是真的,你可以拋出驗證。

+0

這是非常模糊的,它不能真正幫助我...我應該如何「拋出」驗證? – morsanu 2010-05-03 07:23:20