diff --git a/samples/XamlDesigner/Document.cs b/samples/XamlDesigner/Document.cs
index 95d1580700..21a28e35e5 100644
--- a/samples/XamlDesigner/Document.cs
+++ b/samples/XamlDesigner/Document.cs
@@ -206,7 +206,14 @@ namespace ICSharpCode.XamlDesigner
{
OutlineRoot = null;
using (var xmlReader = XmlReader.Create(new StringReader(Text))) {
- DesignSurface.LoadDesigner(xmlReader, null);
+ XamlLoadSettings settings = new XamlLoadSettings();
+ foreach (var assNode in Toolbox.Instance.AssemblyNodes)
+ {
+ settings.DesignerAssemblies.Add(assNode.Assembly);
+ }
+ settings.TypeFinder = MyTypeFinder.Instance;
+
+ DesignSurface.LoadDesigner(xmlReader, settings);
}
if (DesignContext.RootItem != null) {
OutlineRoot = OutlineNode.Create(DesignContext.RootItem);
diff --git a/samples/XamlDesigner/MyTypeFinder.cs b/samples/XamlDesigner/MyTypeFinder.cs
new file mode 100644
index 0000000000..6f529d4514
--- /dev/null
+++ b/samples/XamlDesigner/MyTypeFinder.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using ICSharpCode.WpfDesign.XamlDom;
+
+namespace ICSharpCode.XamlDesigner
+{
+ public class MyTypeFinder : XamlTypeFinder
+ {
+ public override Assembly LoadAssembly(string name)
+ {
+ foreach (var assemblyNode in Toolbox.Instance.AssemblyNodes)
+ {
+ if (assemblyNode.Name == name)
+ return assemblyNode.Assembly;
+ }
+
+ return null;
+ }
+
+ public override XamlTypeFinder Clone()
+ {
+ return _instance;
+ }
+
+ private static object lockObj = new object();
+
+ private static MyTypeFinder _instance;
+ public static MyTypeFinder Instance
+ {
+ get
+ {
+ lock (lockObj)
+ {
+ if (_instance == null)
+ {
+ _instance = new MyTypeFinder();
+ _instance.ImportFrom(CreateWpfTypeFinder());
+ }
+ }
+
+ return _instance;
+ }
+ }
+ }
+}
diff --git a/samples/XamlDesigner/Toolbox.cs b/samples/XamlDesigner/Toolbox.cs
index f66fae9ecf..d4880827a7 100644
--- a/samples/XamlDesigner/Toolbox.cs
+++ b/samples/XamlDesigner/Toolbox.cs
@@ -31,6 +31,8 @@ namespace ICSharpCode.XamlDesigner
{
var assembly = Assembly.LoadFile(path);
+ MyTypeFinder.Instance.RegisterAssembly(assembly);
+
var node = new AssemblyNode();
node.Assembly = assembly;
node.Path = path;
diff --git a/samples/XamlDesigner/XamlDesigner.csproj b/samples/XamlDesigner/XamlDesigner.csproj
index 3ccebb1cb4..8448d81cbf 100644
--- a/samples/XamlDesigner/XamlDesigner.csproj
+++ b/samples/XamlDesigner/XamlDesigner.csproj
@@ -129,6 +129,7 @@
+
MainWindow.xaml