MainPage.xaml.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. namespace NatTypeTester.Views;
  2. internal sealed partial class MainPage
  3. {
  4. public MainPage()
  5. {
  6. InitializeComponent();
  7. ViewModel = Locator.Current.GetRequiredService<MainWindowViewModel>();
  8. IAbpLazyServiceProvider serviceProvider = Locator.Current.GetRequiredService<IAbpLazyServiceProvider>();
  9. this.WhenActivated(d =>
  10. {
  11. #region DPI
  12. double scale = XamlRoot.RasterizationScale;
  13. if (scale is not 1.0)
  14. {
  15. AppWindow appWindow = Locator.Current.GetRequiredService<MainWindow>().AppWindow;
  16. appWindow.Resize(new SizeInt32((int)(appWindow.Size.Width * scale), (int)(appWindow.Size.Height * scale)));
  17. }
  18. #endregion
  19. this.Bind(ViewModel,
  20. vm => vm.Config.StunServer,
  21. v => v.ServersComboBox.Text
  22. ).DisposeWith(d);
  23. this.OneWayBind(ViewModel,
  24. vm => vm.StunServers,
  25. v => v.ServersComboBox.ItemsSource
  26. ).DisposeWith(d);
  27. this.OneWayBind(ViewModel, vm => vm.Router, v => v.RoutedViewHost.Router).DisposeWith(d);
  28. NavigationView.Events().SelectionChanged.Subscribe(parameter =>
  29. {
  30. if (parameter.args.IsSettingsSelected)
  31. {
  32. ViewModel.Router.Navigate.Execute(serviceProvider.LazyGetRequiredService<SettingViewModel>()).Subscribe().Dispose();
  33. return;
  34. }
  35. if (parameter.args.SelectedItem is not NavigationViewItem { Tag: string tag })
  36. {
  37. return;
  38. }
  39. switch (tag)
  40. {
  41. case @"1":
  42. {
  43. ViewModel.Router.Navigate.Execute(serviceProvider.LazyGetRequiredService<RFC5780ViewModel>()).Subscribe().Dispose();
  44. break;
  45. }
  46. case @"2":
  47. {
  48. ViewModel.Router.Navigate.Execute(serviceProvider.LazyGetRequiredService<RFC3489ViewModel>()).Subscribe().Dispose();
  49. break;
  50. }
  51. }
  52. }).DisposeWith(d);
  53. NavigationView.SelectedItem = NavigationView.MenuItems.OfType<NavigationViewItem>().First();
  54. ViewModel.LoadStunServer();
  55. ServersComboBox.SelectedIndex = 0;
  56. });
  57. }
  58. }