У меня проблемы с проверками, и до сих пор это была настоящая борьба. Я изменил код и много читал об этом, и следил за этим руководством большую часть пути: http://developingfor.net/2009/10/13/using-custom-validation-rules-in-wpf/, но у меня проблемы. Валидация не стреляет, и я не могу найти причину! Я отправлю часть своего кода.ValidationRule не срабатывает
public class RequiredFields : ValidationRule
{
private String _errorMessage = String.Empty;
public string ErrorMessage
{
get { return _errorMessage; }
set { _errorMessage = value; }
}
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
var str = value as string;
if (String.IsNullOrEmpty(str))
{
return new ValidationResult(false, this.ErrorMessage);
}
return new ValidationResult(true, null);
}
}
XAML:
<Style
x:Key="textBoxInError"
TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger
Property="Validation.HasError"
Value="true">
<Setter
Property="ToolTip"
Value="{Binding (Validation.Errors)[0].ErrorContent, RelativeSource={x:Static RelativeSource.Self}}" />
<Setter
Property="Background"
Value="Red" />
<Setter
Property="Foreground"
Value="White" />
</Trigger>
</Style.Triggers>
</Style>
TextBox XAML:
<TextBox x:Name="txtFirstName" Validation.ErrorTemplate="{StaticResource validationTemplate}" HorizontalAlignment="Left" Height="23" Margin="156,62,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="149">
<TextBox.Text>
<Binding Path="FirstName" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay">
<Binding.ValidationRules>
<validators:RequiredFields ErrorMessage="Name is Required" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
CodeBehind для XAML окна имеет следующее:
RequiredFields ss = new RequiredFields();
this.DataContext = ss;
Но по какой-то причине я не буду см. стрельбу по событиям. Если я отмечу точку останова в ValidationResult, она ничего не сделает.
Спасибо за ответ, у меня были проблемы с Интернетом, но я проверю это. Спасибо, король :) –