summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Build.Tasks/CompiledValueProviders/SetterValueProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Build.Tasks/CompiledValueProviders/SetterValueProvider.cs')
-rw-r--r--Xamarin.Forms.Build.Tasks/CompiledValueProviders/SetterValueProvider.cs8
1 files changed, 7 insertions, 1 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)