summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Xaml
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Xaml')
-rw-r--r--Xamarin.Forms.Xaml/CreateValuesVisitor.cs9
1 files changed, 8 insertions, 1 deletions
diff --git a/Xamarin.Forms.Xaml/CreateValuesVisitor.cs b/Xamarin.Forms.Xaml/CreateValuesVisitor.cs
index c2331bf1..817b62c8 100644
--- a/Xamarin.Forms.Xaml/CreateValuesVisitor.cs
+++ b/Xamarin.Forms.Xaml/CreateValuesVisitor.cs
@@ -107,7 +107,7 @@ namespace Xamarin.Forms.Xaml
Values[node] = value;
var markup = value as IMarkupExtension;
- if (markup != null && (value is TypeExtension || value is StaticExtension))
+ if (markup != null && (value is TypeExtension || value is StaticExtension || value is ArrayExtension))
{
var serviceProvider = new XamlServiceProvider(node, Context);
@@ -119,9 +119,16 @@ namespace Xamarin.Forms.Xaml
value = markup.ProvideValue(serviceProvider);
+ INode xKey;
+ if (!node.Properties.TryGetValue(XmlName.xKey, out xKey))
+ xKey = null;
+
node.Properties.Clear();
node.CollectionItems.Clear();
+ if (xKey != null)
+ node.Properties.Add(XmlName.xKey, xKey);
+
Values[node] = value;
}