diff options
author | Stephane Delcroix <stephane@delcroix.org> | 2017-01-25 14:47:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-25 14:47:27 +0100 |
commit | f30aa8ae2c54172df237a80dfff7a6eb0c679195 (patch) | |
tree | c0c0f3e0a9ed58972cf3a4277c29ef2e3da2dd1c /Xamarin.Forms.Xaml/XamlNodeVisitor.cs | |
parent | ebb24b7edd2b297f259eadfa4686e03c96504f1d (diff) | |
download | xamarin-forms-f30aa8ae2c54172df237a80dfff7a6eb0c679195.tar.gz xamarin-forms-f30aa8ae2c54172df237a80dfff7a6eb0c679195.tar.bz2 xamarin-forms-f30aa8ae2c54172df237a80dfff7a6eb0c679195.zip |
[Xaml[C]] Do not instantiate DataTemplate Content at parsing time (#683)
* [Xaml] rename VisitChildrenFirst
* [Xaml] rework SkipChildren in XamlNode
* [Xaml] fix 45179
* fix
Diffstat (limited to 'Xamarin.Forms.Xaml/XamlNodeVisitor.cs')
-rw-r--r-- | Xamarin.Forms.Xaml/XamlNodeVisitor.cs | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/Xamarin.Forms.Xaml/XamlNodeVisitor.cs b/Xamarin.Forms.Xaml/XamlNodeVisitor.cs index e0b1db32..874a5fbd 100644 --- a/Xamarin.Forms.Xaml/XamlNodeVisitor.cs +++ b/Xamarin.Forms.Xaml/XamlNodeVisitor.cs @@ -2,12 +2,11 @@ namespace Xamarin.Forms.Xaml { - internal interface IXamlNodeVisitor + interface IXamlNodeVisitor { - bool VisitChildrenFirst { get; } - + TreeVisitingMode VisitingMode { get; } bool StopOnDataTemplate { get; } - + bool VisitNodeOnDataTemplate { get; } bool StopOnResourceDictionary { get; } void Visit(ValueNode node, INode parentNode); @@ -17,22 +16,27 @@ namespace Xamarin.Forms.Xaml void Visit(ListNode node, INode parentNode); } - internal class XamlNodeVisitor : IXamlNodeVisitor + enum TreeVisitingMode { + TopDown, + BottomUp + } + + class XamlNodeVisitor : IXamlNodeVisitor { readonly Action<INode, INode> action; - public XamlNodeVisitor(Action<INode, INode> action, bool visitChildrenFirst = false, bool stopOnDataTemplate = false) + public XamlNodeVisitor(Action<INode, INode> action, TreeVisitingMode visitingMode = TreeVisitingMode.TopDown, bool stopOnDataTemplate = false, bool visitNodeOnDataTemplate = true) { this.action = action; - VisitChildrenFirst = visitChildrenFirst; + VisitingMode = visitingMode; StopOnDataTemplate = stopOnDataTemplate; + VisitNodeOnDataTemplate = visitNodeOnDataTemplate; } - public bool VisitChildrenFirst { get; } - + public TreeVisitingMode VisitingMode { get; } public bool StopOnDataTemplate { get; } - public bool StopOnResourceDictionary { get; private set; } + public bool VisitNodeOnDataTemplate { get; } public void Visit(ValueNode node, INode parentNode) { |