diff --git a/ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlReader.cs b/ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlReader.cs
index 00c51225e..eb5887901 100644
--- a/ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlReader.cs
+++ b/ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlReader.cs
@@ -870,8 +870,7 @@ namespace Ricciolo.StylesExplorer.MarkupReflection
short extensionIdentifier = (short)-(x & 0xfff);
string value = String.Empty;
- switch (x)
- {
+ switch (x) {
case 0x25a:
// StaticExtension
object resource = this.GetResourceName(valueIdentifier);
@@ -1093,30 +1092,27 @@ namespace Ricciolo.StylesExplorer.MarkupReflection
CloseElement();
complexPropertyOpened--;
-// // Valuto se contiene tutte extension
-// int start = nodes.IndexOf(propertyElement) + 1;
-// IEnumerator enumerator = nodes.GetEnumerator();
-//
-// int c = 0;
-// while (c < start && enumerator.MoveNext())
-// c++;
-//
-// if (IsExtension(enumerator))
-// {
-// start--;
-// nodes.RemoveAt(start);
-// nodes.RemoveLast();
-//
-// StringBuilder sb = new StringBuilder();
-// FormatElementExtension((XmlBamlElement) nodes[start], sb);
-//
-// XmlBamlProperty property =
-// new XmlBamlProperty(PropertyType.Complex, propertyElement.PropertyDeclaration);
-// property.Value = sb.ToString();
-// nodes.Add(property);
-//
-// return;
-// }
+ // this property could be a markup extension
+ // try to convert it
+ int start = nodes.IndexOf(propertyElement) + 1;
+ IEnumerator enumerator = nodes.GetEnumerator();
+
+ // move enumerator to the start of this property value
+ for (int i = 0; i < start && enumerator.MoveNext(); i++) ;
+
+ if (IsExtension(enumerator)) {
+ start--;
+ nodes.RemoveAt(start);
+ nodes.RemoveLast();
+
+ StringBuilder sb = new StringBuilder();
+ FormatElementExtension((XmlBamlElement) nodes[start], sb);
+
+ XmlBamlProperty property =
+ new XmlBamlProperty(elements.Peek(), PropertyType.Complex, propertyElement.PropertyDeclaration);
+ property.Value = sb.ToString();
+ nodes.Add(property);
+ }
}
void FormatElementExtension(XmlBamlElement element, StringBuilder sb)
@@ -1535,8 +1531,8 @@ namespace Ricciolo.StylesExplorer.MarkupReflection
if (identifier < LastKey.StaticResources.Count)
return LastKey.StaticResources[(int)identifier];
- return "???" + identifier +"???";
-// throw new ArgumentException("Cannot find StaticResource", "identifier");
+// return "???" + identifier +"???";
+ throw new ArgumentException("Cannot find StaticResource", "identifier");
}
void ReadTextWithConverter()
diff --git a/ILSpy.BamlDecompiler/Tests/Cases/AvalonDockCommon.xaml b/ILSpy.BamlDecompiler/Tests/Cases/AvalonDockCommon.xaml
index 265f0b28f..2f4435793 100644
--- a/ILSpy.BamlDecompiler/Tests/Cases/AvalonDockCommon.xaml
+++ b/ILSpy.BamlDecompiler/Tests/Cases/AvalonDockCommon.xaml
@@ -17,11 +17,11 @@