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