Validation.HasError 당신이
BindingExpression be = textboxMin.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
UpdateSource를 BindingExpression을 얻을 호출 할 수 있습니다 뒤에 코드에서 TextProperty에 대한 모든 ValidationRules를 실행하려면이
void buttonOK_Click(object sender, RoutedEventArgs e)
{
if (Validation.GetHasError(textboxMin) == true)
return;
}
처럼 textboxMin을 위해 그것을 확인할 수 있도록 연결된 속성입니다
업데이트
붕괴에 대한 바인딩을 달성하려면 몇 단계가 필요합니다. 유효성 검사가 발생하면 버튼을 누릅니다.
먼저 모든 바인딩에 NotifyOnValidationError = "True"를 추가하십시오. 예
<TextBox Name="textboxMin">
<TextBox.Text>
<Binding Path="Max" NotifyOnValidationError="True">
<Binding.ValidationRules>
<local:IntValidator/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
그런 다음 Window의 Validation.Error 이벤트에 EventHandler를 연결합니다.
<Window ...
Validation.Error="Window_Error">
그리고 코드에서 우리는 추가하고 와서 같이 ObservableCollection에있는 유효성 검사 오류를 제거하고
public ObservableCollection<ValidationError> ValidationErrors { get; private set; }
private void Window_Error(object sender, ValidationErrorEventArgs e)
{
if (e.Action == ValidationErrorEventAction.Added)
{
ValidationErrors.Add(e.Error);
}
else
{
ValidationErrors.Remove(e.Error);
}
}
를 이동 그리고 우리는이
같은 ValidationErrors.Count에 버튼의 IsEnabled를 바인딩 할 수 있습니다 뒤에
<Button ...>
<Button.Style>
<Style TargetType="Button">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ValidationErrors.Count}" Value="0">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
가 특정 ValidationRule이 오류가하거나 텍스트 상자에 오류가있는 경우 알고해야합니까 HasError 속성에 확인할 수 있나요? –