MainWindow.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. namespace XamlTestApplication.Views
  2. {
  3. using System;
  4. using System.Globalization;
  5. using System.IO;
  6. using System.Reflection;
  7. using System.Resources;
  8. using OmniXaml;
  9. using OmniXaml.AppServices.Mvvm;
  10. using Perspex.Diagnostics;
  11. using Perspex.Xaml.Desktop;
  12. [ViewToken("Main", typeof(MainWindow))]
  13. public class MainWindow : PerspexWindow
  14. {
  15. public MainWindow()
  16. {
  17. this.InitializeComponent();
  18. DevTools.Attach(this);
  19. }
  20. private void InitializeComponent()
  21. {
  22. var xamlLoader = new XamlLoader(new PerspexParserFactory(new TypeFactory()));
  23. var stream = GetStream(new Uri("Views/MainWindow.xaml", UriKind.Relative));
  24. xamlLoader.Load(stream, this);
  25. }
  26. private static Stream GetStream(Uri resourceLocator)
  27. {
  28. var assembly = Assembly.GetEntryAssembly();
  29. var resourceName = assembly.GetName().Name + ".g";
  30. var manager = new ResourceManager(resourceName, assembly);
  31. using (var resourceSet = manager.GetResourceSet(CultureInfo.CurrentCulture, true, true))
  32. {
  33. var stream = (Stream)resourceSet.GetObject(resourceLocator.ToString(), true);
  34. if (stream == null)
  35. {
  36. throw new IOException($"The requested resource could not be found: {resourceLocator}");
  37. }
  38. return stream;
  39. }
  40. }
  41. }
  42. }