Browse Source

Pass enableDataValidation to all bindings.

#1248 was caused by not passing the `enableDataValidation` setting to all types of binding. Fix this.

Fixes #1248.
pull/1305/head
Steven Kirk 9 years ago
parent
commit
f014bd576c
  1. 32
      src/Markup/Avalonia.Markup.Xaml/Data/Binding.cs

32
src/Markup/Avalonia.Markup.Xaml/Data/Binding.cs

@ -104,7 +104,8 @@ namespace Avalonia.Markup.Xaml.Data
observer = CreateElementObserver( observer = CreateElementObserver(
(target as IControl) ?? (anchor as IControl), (target as IControl) ?? (anchor as IControl),
ElementName, ElementName,
Path); Path,
enableDataValidation);
} }
else if (Source != null) else if (Source != null)
{ {
@ -125,7 +126,7 @@ namespace Avalonia.Markup.Xaml.Data
} }
else if (RelativeSource.Mode == RelativeSourceMode.TemplatedParent) else if (RelativeSource.Mode == RelativeSourceMode.TemplatedParent)
{ {
observer = CreateTemplatedParentObserver(target, Path); observer = CreateTemplatedParentObserver(target, Path, enableDataValidation);
} }
else if (RelativeSource.Mode == RelativeSourceMode.FindAncestor) else if (RelativeSource.Mode == RelativeSourceMode.FindAncestor)
{ {
@ -137,7 +138,8 @@ namespace Avalonia.Markup.Xaml.Data
observer = CreateFindAncestorObserver( observer = CreateFindAncestorObserver(
(target as IControl) ?? (anchor as IControl), (target as IControl) ?? (anchor as IControl),
RelativeSource, RelativeSource,
Path); Path,
enableDataValidation);
} }
else else
{ {
@ -207,7 +209,11 @@ namespace Avalonia.Markup.Xaml.Data
} }
} }
private ExpressionObserver CreateElementObserver(IControl target, string elementName, string path) private ExpressionObserver CreateElementObserver(
IControl target,
string elementName,
string path,
bool enableDataValidation)
{ {
Contract.Requires<ArgumentNullException>(target != null); Contract.Requires<ArgumentNullException>(target != null);
@ -215,7 +221,7 @@ namespace Avalonia.Markup.Xaml.Data
var result = new ExpressionObserver( var result = new ExpressionObserver(
ControlLocator.Track(target, elementName), ControlLocator.Track(target, elementName),
path, path,
false, enableDataValidation,
description); description);
return result; return result;
} }
@ -223,28 +229,31 @@ namespace Avalonia.Markup.Xaml.Data
private ExpressionObserver CreateFindAncestorObserver( private ExpressionObserver CreateFindAncestorObserver(
IControl target, IControl target,
RelativeSource relativeSource, RelativeSource relativeSource,
string path) string path,
bool enableDataValidation)
{ {
Contract.Requires<ArgumentNullException>(target != null); Contract.Requires<ArgumentNullException>(target != null);
return new ExpressionObserver( return new ExpressionObserver(
ControlLocator.Track(target, relativeSource.Tree, relativeSource.AncestorLevel - 1, relativeSource.AncestorType), ControlLocator.Track(target, relativeSource.Tree, relativeSource.AncestorLevel - 1, relativeSource.AncestorType),
path); path,
enableDataValidation);
} }
private ExpressionObserver CreateSourceObserver( private ExpressionObserver CreateSourceObserver(
object source, object source,
string path, string path,
bool enabledDataValidation) bool enableDataValidation)
{ {
Contract.Requires<ArgumentNullException>(source != null); Contract.Requires<ArgumentNullException>(source != null);
return new ExpressionObserver(source, path, enabledDataValidation); return new ExpressionObserver(source, path, enableDataValidation);
} }
private ExpressionObserver CreateTemplatedParentObserver( private ExpressionObserver CreateTemplatedParentObserver(
IAvaloniaObject target, IAvaloniaObject target,
string path) string path,
bool enableDataValidation)
{ {
Contract.Requires<ArgumentNullException>(target != null); Contract.Requires<ArgumentNullException>(target != null);
@ -255,7 +264,8 @@ namespace Avalonia.Markup.Xaml.Data
var result = new ExpressionObserver( var result = new ExpressionObserver(
() => target.GetValue(Control.TemplatedParentProperty), () => target.GetValue(Control.TemplatedParentProperty),
path, path,
update); update,
enableDataValidation);
return result; return result;
} }

Loading…
Cancel
Save