summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Build.Tasks
diff options
context:
space:
mode:
authorStephane Delcroix <stephane@delcroix.org>2017-01-25 15:09:54 +0100
committerGitHub <noreply@github.com>2017-01-25 15:09:54 +0100
commitca7f2caf57b2b4a9705cc02fe51d8a29d9f21da6 (patch)
treec86418662285f56f5260bb7684caf739f73d682c /Xamarin.Forms.Build.Tasks
parentf30aa8ae2c54172df237a80dfff7a6eb0c679195 (diff)
downloadxamarin-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.cs8
-rw-r--r--Xamarin.Forms.Build.Tasks/CompiledValueProviders/TriggerValueProvider.cs8
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)