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.Build.Tasks/SetPropertiesVisitor.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.Build.Tasks/SetPropertiesVisitor.cs')
-rw-r--r-- | Xamarin.Forms.Build.Tasks/SetPropertiesVisitor.cs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/Xamarin.Forms.Build.Tasks/SetPropertiesVisitor.cs b/Xamarin.Forms.Build.Tasks/SetPropertiesVisitor.cs index 9cf62221..4a8fd70c 100644 --- a/Xamarin.Forms.Build.Tasks/SetPropertiesVisitor.cs +++ b/Xamarin.Forms.Build.Tasks/SetPropertiesVisitor.cs @@ -37,8 +37,9 @@ namespace Xamarin.Forms.Build.Tasks public ILContext Context { get; } public bool StopOnResourceDictionary { get; } - public bool VisitChildrenFirst { get; } = true; - public bool StopOnDataTemplate { get; } = true; + public TreeVisitingMode VisitingMode => TreeVisitingMode.BottomUp; + public bool StopOnDataTemplate => true; + public bool VisitNodeOnDataTemplate => true; ModuleDefinition Module { get; } @@ -88,6 +89,11 @@ namespace Xamarin.Forms.Build.Tasks if ((propertyName != XmlName.Empty || TryGetPropertyName(node, parentNode, out propertyName)) && skips.Contains(propertyName)) return; + if (propertyName == XmlName._CreateContent) { + SetDataTemplate((IElementNode)parentNode, node, Context, node); + return; + } + //if this node is an IMarkupExtension, invoke ProvideValue() and replace the variable var vardef = Context.Variables[node]; var vardefref = new VariableDefinitionReference(vardef); @@ -114,11 +120,8 @@ namespace Xamarin.Forms.Build.Tasks return; if (parentNode is IElementNode && ((IElementNode)parentNode).SkipProperties.Contains (propertyName)) return; - - if (propertyName == XmlName._CreateContent) - SetDataTemplate((IElementNode)parentNode, node, Context, node); - else - Context.IL.Append(SetPropertyValue(Context.Variables[(IElementNode)parentNode], propertyName, node, Context, node)); + + Context.IL.Append(SetPropertyValue(Context.Variables[(IElementNode)parentNode], propertyName, node, Context, node)); } else if (IsCollectionItem(node, parentNode) && parentNode is IElementNode) { |