diff --git a/ILSpy.BamlDecompiler/Handlers/Records/StaticResourceIdHandler.cs b/ILSpy.BamlDecompiler/Handlers/Records/StaticResourceIdHandler.cs
new file mode 100644
index 000000000..c52dcc771
--- /dev/null
+++ b/ILSpy.BamlDecompiler/Handlers/Records/StaticResourceIdHandler.cs
@@ -0,0 +1,53 @@
+// Copyright (c) 2019 Siegfried Pammer
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this
+// software and associated documentation files (the "Software"), to deal in the Software
+// without restriction, including without limitation the rights to use, copy, modify, merge,
+// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+using System;
+using ILSpy.BamlDecompiler.Baml;
+using ILSpy.BamlDecompiler.Xaml;
+
+namespace ILSpy.BamlDecompiler.Handlers
+{
+ class StaticResourceIdHandler : IHandler
+ {
+ public BamlRecordType Type => BamlRecordType.StaticResourceId;
+
+ public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent)
+ {
+ var record = (StaticResourceIdRecord)((BamlRecordNode)node).Record;
+
+ BamlNode found = node;
+ XamlResourceKey key;
+ do {
+ key = XamlResourceKey.FindKeyInAncestors(found.Parent, out found);
+ } while (key != null && record.StaticResourceId >= key.StaticResources.Count);
+
+ if (key == null)
+ throw new Exception("Cannot find StaticResource @" + node.Record.Position);
+
+ var resNode = key.StaticResources[record.StaticResourceId];
+
+ var handler = (IDeferHandler)HandlerMap.LookupHandler(resNode.Type);
+ var resElem = handler.TranslateDefer(ctx, resNode, parent);
+
+ parent.Children.Add(resElem);
+ resElem.Parent = parent;
+
+ return resElem;
+ }
+ }
+}
diff --git a/ILSpy.BamlDecompiler/Handlers/Records/StaticResourceStartHandler.cs b/ILSpy.BamlDecompiler/Handlers/Records/StaticResourceStartHandler.cs
new file mode 100644
index 000000000..ad627f3de
--- /dev/null
+++ b/ILSpy.BamlDecompiler/Handlers/Records/StaticResourceStartHandler.cs
@@ -0,0 +1,52 @@
+// Copyright (c) 2019 Siegfried Pammer
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this
+// software and associated documentation files (the "Software"), to deal in the Software
+// without restriction, including without limitation the rights to use, copy, modify, merge,
+// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Xml.Linq;
+using ILSpy.BamlDecompiler.Baml;
+using ILSpy.BamlDecompiler.Xaml;
+
+namespace ILSpy.BamlDecompiler.Handlers
+{
+ class StaticResourceStartHandler : IHandler, IDeferHandler
+ {
+ public BamlRecordType Type => BamlRecordType.StaticResourceStart;
+
+ public BamlElement Translate(XamlContext ctx, BamlNode node, BamlElement parent)
+ {
+ var record = (StaticResourceStartRecord)((BamlBlockNode)node).Record;
+ var key = XamlResourceKey.FindKeyInSiblings(node);
+
+ key.StaticResources.Add(node);
+ return null;
+ }
+
+ public BamlElement TranslateDefer(XamlContext ctx, BamlNode node, BamlElement parent)
+ {
+ var record = (StaticResourceStartRecord)((BamlBlockNode)node).Record;
+ var doc = new BamlElement(node);
+ var elemType = ctx.ResolveType(record.TypeId);
+ doc.Xaml = new XElement(elemType.ToXName(ctx));
+ doc.Xaml.Element.AddAnnotation(elemType);
+ parent.Xaml.Element.Add(doc.Xaml.Element);
+ HandlerMap.ProcessChildren(ctx, (BamlBlockNode)node, doc);
+ return doc;
+ }
+ }
+}
diff --git a/ILSpy.BamlDecompiler/ILSpy.BamlDecompiler.csproj b/ILSpy.BamlDecompiler/ILSpy.BamlDecompiler.csproj
index 67d4706f2..87269f706 100644
--- a/ILSpy.BamlDecompiler/ILSpy.BamlDecompiler.csproj
+++ b/ILSpy.BamlDecompiler/ILSpy.BamlDecompiler.csproj
@@ -97,6 +97,8 @@
+
+