2010-01-18 36 views
26

Próbuję użyć w WPF walidacji danych wejściowych formantów databound z regułami sprawdzania poprawności. W kodzie znajdującym się za plikiem okna wpf mam klasę:Jak zadeklarować przestrzeń nazw w WPF XAML?

public class posintValidationRule : ValidationRule 
{ 
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) 
    { 
     string _strInt = value.ToString(); 
     int _int = -1; 
     if (!Int32.TryParse(_strInt, out _int)) 
      return new ValidationResult(false, "Value must be an integer"); 
     if (_int < 0) 
      return new ValidationResult(false, "Value must be positive"); 
     return new ValidationResult(true, null); 
    } 
} 

W XAML istnieje również szablon błędu stylu.

Kiedy kładę pole tekstowe z walidacji w XAML:

<TextBox.Text> 
    <Binding Path="seconds" UpdateSourceTrigger="PropertyChanged"> 
     <Binding.ValidationRules> 
      <local:posintValidationRule/> 
     </Binding.ValidationRules> 
    </Binding> 
</TextBox.Text> 

Otrzymuję błąd czasu kompilacji. '' local 'jest nazw nierejestrowana' XML jest nieprawidłowy.

Jak powinienem zadeklarować local:posintValidationRule w moim XAML?

Odpowiedz

51

U góry pliku XAML należy zadeklarować, jaka jest "lokalna" przestrzeń nazw; obok domyślnych rzeczy Microsoft XAML. Coś takiego:

xmlns:local="clr-namespace:YourApplication" 

Uwaga ta zakłada, że ​​„posintValidationRule” jest zdefiniowane w przestrzeni nazw głównego w „YourApplication”.