summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Xaml/XamlNodeVisitor.cs
diff options
context:
space:
mode:
authorStephane Delcroix <stephane@delcroix.org>2017-01-25 14:47:27 +0100
committerGitHub <noreply@github.com>2017-01-25 14:47:27 +0100
commitf30aa8ae2c54172df237a80dfff7a6eb0c679195 (patch)
treec0c0f3e0a9ed58972cf3a4277c29ef2e3da2dd1c /Xamarin.Forms.Xaml/XamlNodeVisitor.cs
parentebb24b7edd2b297f259eadfa4686e03c96504f1d (diff)
downloadxamarin-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.cs24
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)
{