forked from wsick/Fayde
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEmit.ts
28 lines (27 loc) · 1.44 KB
/
Emit.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module Fayde.Validation {
export function Emit (fe: FrameworkElement, binding: Data.Binding, oldError: ValidationError, error: ValidationError) {
if (oldError && error) {
AddError(fe, error);
RemoveError(fe, oldError);
if (binding.NotifyOnValidationError) {
raiseBindingValidationError(fe, new ValidationErrorEventArgs(ValidationErrorEventAction.Removed, oldError));
raiseBindingValidationError(fe, new ValidationErrorEventArgs(ValidationErrorEventAction.Added, error));
}
} else if (oldError) {
RemoveError(fe, oldError);
if (binding.NotifyOnValidationError)
raiseBindingValidationError(fe, new ValidationErrorEventArgs(ValidationErrorEventAction.Removed, oldError));
} else if (error) {
AddError(fe, error);
if (binding.NotifyOnValidationError)
raiseBindingValidationError(fe, new ValidationErrorEventArgs(ValidationErrorEventAction.Added, error));
}
}
function raiseBindingValidationError (fe: FrameworkElement, args: Validation.ValidationErrorEventArgs) {
args.OriginalSource = fe;
for (var cur = <DependencyObject>fe; cur && !args.Handled; cur = VisualTreeHelper.GetParent(cur)) {
if (cur instanceof FrameworkElement)
(<FrameworkElement>cur).OnBindingValidationError(args);
}
}
}