Browse Source

Own Type Finder for XamlDesigner Project -> needed for tests, so that other assemblys work

pull/52/head
jkuehner 12 years ago
parent
commit
6a39a57d10
  1. 9
      samples/XamlDesigner/Document.cs
  2. 49
      samples/XamlDesigner/MyTypeFinder.cs
  3. 2
      samples/XamlDesigner/Toolbox.cs
  4. 1
      samples/XamlDesigner/XamlDesigner.csproj

9
samples/XamlDesigner/Document.cs

@ -206,7 +206,14 @@ namespace ICSharpCode.XamlDesigner @@ -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);

49
samples/XamlDesigner/MyTypeFinder.cs

@ -0,0 +1,49 @@ @@ -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;
}
}
}
}

2
samples/XamlDesigner/Toolbox.cs

@ -31,6 +31,8 @@ namespace ICSharpCode.XamlDesigner @@ -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;

1
samples/XamlDesigner/XamlDesigner.csproj

@ -129,6 +129,7 @@ @@ -129,6 +129,7 @@
</Compile>
<Compile Include="ExtensionMethods.cs" />
<Compile Include="MainWindow_Commands.cs" />
<Compile Include="MyTypeFinder.cs" />
<Compile Include="Shell.cs" />
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>

Loading…
Cancel
Save