diff options
author | Stephane Delcroix <stephane@delcroix.org> | 2017-01-25 15:09:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-25 15:09:54 +0100 |
commit | ca7f2caf57b2b4a9705cc02fe51d8a29d9f21da6 (patch) | |
tree | c86418662285f56f5260bb7684caf739f73d682c /Xamarin.Forms.Build.Tasks | |
parent | f30aa8ae2c54172df237a80dfff7a6eb0c679195 (diff) | |
download | xamarin-forms-ca7f2caf57b2b4a9705cc02fe51d8a29d9f21da6.tar.gz xamarin-forms-ca7f2caf57b2b4a9705cc02fe51d8a29d9f21da6.tar.bz2 xamarin-forms-ca7f2caf57b2b4a9705cc02fe51d8a29d9f21da6.zip |
[XamlC] allow xml-elements as Setter/Trigger Values (#684)
Diffstat (limited to 'Xamarin.Forms.Build.Tasks')
-rw-r--r-- | Xamarin.Forms.Build.Tasks/CompiledValueProviders/SetterValueProvider.cs | 8 | ||||
-rw-r--r-- | Xamarin.Forms.Build.Tasks/CompiledValueProviders/TriggerValueProvider.cs | 8 |
2 files changed, 14 insertions, 2 deletions
diff --git a/Xamarin.Forms.Build.Tasks/CompiledValueProviders/SetterValueProvider.cs b/Xamarin.Forms.Build.Tasks/CompiledValueProviders/SetterValueProvider.cs index 482ee7c6..60c3328f 100644 --- a/Xamarin.Forms.Build.Tasks/CompiledValueProviders/SetterValueProvider.cs +++ b/Xamarin.Forms.Build.Tasks/CompiledValueProviders/SetterValueProvider.cs @@ -5,6 +5,7 @@ using Mono.Cecil.Cil; using Xamarin.Forms.Xaml; using Xamarin.Forms.Build.Tasks; +using System.Xml; namespace Xamarin.Forms.Core.XamlC { @@ -12,7 +13,12 @@ namespace Xamarin.Forms.Core.XamlC { public IEnumerable<Instruction> ProvideValue(VariableDefinitionReference vardefref, ModuleDefinition module, BaseNode node, ILContext context) { - var valueNode = ((IElementNode)node).Properties[new XmlName("", "Value")]; + INode valueNode = null; + if (!((IElementNode)node).Properties.TryGetValue(new XmlName("", "Value"), out valueNode) && ((IElementNode)node).CollectionItems.Count == 1) + valueNode = ((IElementNode)node).CollectionItems[0]; + + if (valueNode == null) + throw new XamlParseException("Missing Value for Setter", (IXmlLineInfo)node); //if it's an elementNode, there's probably no need to convert it if (valueNode is IElementNode) diff --git a/Xamarin.Forms.Build.Tasks/CompiledValueProviders/TriggerValueProvider.cs b/Xamarin.Forms.Build.Tasks/CompiledValueProviders/TriggerValueProvider.cs index 6a0ca822..f355a528 100644 --- a/Xamarin.Forms.Build.Tasks/CompiledValueProviders/TriggerValueProvider.cs +++ b/Xamarin.Forms.Build.Tasks/CompiledValueProviders/TriggerValueProvider.cs @@ -5,6 +5,7 @@ using Mono.Cecil.Cil; using Xamarin.Forms.Xaml; using Xamarin.Forms.Build.Tasks; +using System.Xml; namespace Xamarin.Forms.Core.XamlC { @@ -12,7 +13,12 @@ namespace Xamarin.Forms.Core.XamlC { public IEnumerable<Instruction> ProvideValue(VariableDefinitionReference vardefref, ModuleDefinition module, BaseNode node, ILContext context) { - var valueNode = ((IElementNode)node).Properties[new XmlName("", "Value")]; + INode valueNode = null; + if (!((IElementNode)node).Properties.TryGetValue(new XmlName("", "Value"), out valueNode) && ((IElementNode)node).CollectionItems.Count == 1) + valueNode = ((IElementNode)node).CollectionItems[0]; + + if (valueNode == null) + throw new XamlParseException("Missing Value for Trigger", (IXmlLineInfo)node); //if it's an elementNode, there's probably no need to convert it if (valueNode is IElementNode) |