diff --git a/samples/XamlTestApplication/Views/MainWindow.cs b/samples/XamlTestApplication/Views/MainWindow.cs
index 4a7e814a91..b1d74acbc8 100644
--- a/samples/XamlTestApplication/Views/MainWindow.cs
+++ b/samples/XamlTestApplication/Views/MainWindow.cs
@@ -1,5 +1,11 @@
namespace XamlTestApplication.Views
{
+ using System;
+ using System.Globalization;
+ using System.IO;
+ using System.Reflection;
+ using System.Resources;
+ using OmniXaml;
using OmniXaml.AppServices.Mvvm;
using Perspex.Diagnostics;
using Perspex.Xaml.Desktop;
@@ -16,8 +22,29 @@
private void InitializeComponent()
{
- var loader = new PerspexXamlLoader(new PerspexInflatableTypeFactory());
- loader.Load(this.GetType());
+ var xamlLoader = new XamlLoader(new PerspexParserFactory(new TypeFactory()));
+ var stream = GetStream(new Uri("Views/MainWindow.xaml", UriKind.Relative));
+ xamlLoader.Load(stream, this);
+ }
+
+
+ private static Stream GetStream(Uri resourceLocator)
+ {
+ var assembly = Assembly.GetEntryAssembly();
+ var resourceName = assembly.GetName().Name + ".g";
+ var manager = new ResourceManager(resourceName, assembly);
+
+ using (var resourceSet = manager.GetResourceSet(CultureInfo.CurrentCulture, true, true))
+ {
+ var stream = (Stream)resourceSet.GetObject(resourceLocator.ToString(), true);
+
+ if (stream == null)
+ {
+ throw new IOException($"The requested resource could not be found: {resourceLocator}");
+ }
+
+ return stream;
+ }
}
}
}
\ No newline at end of file
diff --git a/src/Markup/Perspex.Xaml.Desktop/Perspex.Xaml.Desktop.csproj b/src/Markup/Perspex.Xaml.Desktop/Perspex.Xaml.Desktop.csproj
index b8f40befc2..fd2fc5de1d 100644
--- a/src/Markup/Perspex.Xaml.Desktop/Perspex.Xaml.Desktop.csproj
+++ b/src/Markup/Perspex.Xaml.Desktop/Perspex.Xaml.Desktop.csproj
@@ -121,10 +121,8 @@
Properties\SharedAssemblyInfo.cs
-
-
diff --git a/src/Markup/Perspex.Xaml.Desktop/PerspexInflatableTypeFactory.cs b/src/Markup/Perspex.Xaml.Desktop/PerspexInflatableTypeFactory.cs
deleted file mode 100644
index 384a6dc513..0000000000
--- a/src/Markup/Perspex.Xaml.Desktop/PerspexInflatableTypeFactory.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace Perspex.Xaml.Desktop
-{
- using System;
- using System.Collections.ObjectModel;
- using Controls;
- using OmniXaml;
- using OmniXaml.AppServices;
- using OmniXaml.AppServices.NetCore;
-
- public class PerspexInflatableTypeFactory : InflatableTypeFactory
- {
- public PerspexInflatableTypeFactory() : base(new TypeFactory(), new InflatableTranslator(), typeFactory => new PerspexXamlLoader(typeFactory))
- {
- Inflatables = new Collection { typeof(Window), typeof(UserControl) };
- }
- }
-}
\ No newline at end of file
diff --git a/src/Markup/Perspex.Xaml.Desktop/PerspexXamlLoader.cs b/src/Markup/Perspex.Xaml.Desktop/PerspexXamlLoader.cs
deleted file mode 100644
index 7e60585352..0000000000
--- a/src/Markup/Perspex.Xaml.Desktop/PerspexXamlLoader.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-namespace Perspex.Xaml.Desktop
-{
- using System;
- using System.Globalization;
- using System.IO;
- using System.Reflection;
- using System.Resources;
- using OmniXaml;
-
- public class PerspexXamlLoader : XamlLoader
- {
- public PerspexXamlLoader()
- : this(new PerspexInflatableTypeFactory())
- {
- }
-
- public PerspexXamlLoader(ITypeFactory typeFactory)
- : base(new PerspexParserFactory(typeFactory))
- {
- }
-
- public void Load(Type type)
- {
- this.Load(GetUriFor(type));
- }
-
- public void Load(string path)
- {
- var assembly = Assembly.GetEntryAssembly();
- var resourceName = assembly.GetName().Name + ".g";
- var manager = new ResourceManager(resourceName, assembly);
-
- using (ResourceSet resourceSet = manager.GetResourceSet(CultureInfo.CurrentCulture, true, true))
- {
- var s = (Stream)resourceSet.GetObject(path, true);
-
- if (s == null)
- {
- throw new IOException($"The requested resource could not be found: {path}");
- }
-
- this.Load(s);
- }
- }
-
- private static string GetUriFor(Type type)
- {
- if (type.Namespace != null)
- {
- var toRemove = type.Assembly.GetName().Name;
- var substracted = toRemove.Length < type.Namespace.Length ? type.Namespace.Remove(0, toRemove.Length + 1) : "";
- var replace = substracted.Replace('.', Path.PathSeparator);
-
- if (replace != string.Empty)
- {
- replace = replace + "/";
- }
-
- return replace + type.Name + ".xaml";
- }
-
- return null;
- }
- }
-}
\ No newline at end of file