summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Xaml/XamlNode.cs
diff options
context:
space:
mode:
authorStephane Delcroix <stephane@delcroix.org>2016-04-17 23:59:44 +0200
committerJason Smith <jason.smith@xamarin.com>2016-04-17 14:59:44 -0700
commitcdd6d4defc844b605890e7ad731e27e373b09bf4 (patch)
treeddf897b6bf475273a247891898a6c7daf7fb2079 /Xamarin.Forms.Xaml/XamlNode.cs
parent0b10ab0c130c814b4ab1595c8d13c4c6c9c9d5df (diff)
downloadxamarin-forms-cdd6d4defc844b605890e7ad731e27e373b09bf4.tar.gz
xamarin-forms-cdd6d4defc844b605890e7ad731e27e373b09bf4.tar.bz2
xamarin-forms-cdd6d4defc844b605890e7ad731e27e373b09bf4.zip
Merged ResourceDictionary (#97)
* [X] Support Merged RD * [X] Support RD as xaml roots * [XamlC] I have no idea how that used to work before * [C] Remove debugging statements * fix docs
Diffstat (limited to 'Xamarin.Forms.Xaml/XamlNode.cs')
-rw-r--r--Xamarin.Forms.Xaml/XamlNode.cs16
1 files changed, 10 insertions, 6 deletions
diff --git a/Xamarin.Forms.Xaml/XamlNode.cs b/Xamarin.Forms.Xaml/XamlNode.cs
index aa8e6c82..6d84c67d 100644
--- a/Xamarin.Forms.Xaml/XamlNode.cs
+++ b/Xamarin.Forms.Xaml/XamlNode.cs
@@ -159,7 +159,7 @@ namespace Xamarin.Forms.Xaml
visitor.Visit(this, parentNode);
}
- static bool IsDataTemplate(INode node, INode parentNode)
+ internal static bool IsDataTemplate(INode node, INode parentNode)
{
var parentElement = parentNode as IElementNode;
INode createContent;
@@ -169,7 +169,7 @@ namespace Xamarin.Forms.Xaml
return false;
}
- static bool IsResourceDictionary(INode node, INode parentNode)
+ internal static bool IsResourceDictionary(INode node, INode parentNode)
{
var enode = node as ElementNode;
return enode.XmlType.Name == "ResourceDictionary";
@@ -186,10 +186,14 @@ namespace Xamarin.Forms.Xaml
{
if (!visitor.VisitChildrenFirst)
visitor.Visit(this, parentNode);
- foreach (var node in Properties.Values.ToList())
- node.Accept(visitor, this);
- foreach (var node in CollectionItems)
- node.Accept(visitor, this);
+ if ((!visitor.StopOnDataTemplate || !IsDataTemplate(this, parentNode)) &&
+ (!visitor.StopOnResourceDictionary || !IsResourceDictionary(this, parentNode)))
+ {
+ foreach (var node in Properties.Values.ToList())
+ node.Accept(visitor, this);
+ foreach (var node in CollectionItems)
+ node.Accept(visitor, this);
+ }
if (visitor.VisitChildrenFirst)
visitor.Visit(this, parentNode);
}