diff options
author | Stephane Delcroix <stephane@delcroix.org> | 2016-04-17 23:59:44 +0200 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2016-04-17 14:59:44 -0700 |
commit | cdd6d4defc844b605890e7ad731e27e373b09bf4 (patch) | |
tree | ddf897b6bf475273a247891898a6c7daf7fb2079 /Xamarin.Forms.Xaml/XamlNode.cs | |
parent | 0b10ab0c130c814b4ab1595c8d13c4c6c9c9d5df (diff) | |
download | xamarin-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.cs | 16 |
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); } |