public MainWindow(MainWindowViewModel viewModel, RFC5780ViewModel rfc5780ViewModel, RFC3489ViewModel rfc3489ViewModel, SettingViewModel settingViewModel ) { InitializeComponent(); ViewModel = viewModel; ThemeManager.Current.ApplicationTheme = null; this.WhenActivated(d => { #region Server this.Bind(ViewModel, vm => vm.Config.StunServer, v => v.ServersComboBox.Text ).DisposeWith(d); this.OneWayBind(ViewModel, vm => vm.StunServers, v => v.ServersComboBox.ItemsSource ).DisposeWith(d); #endregion this.Bind(ViewModel, vm => vm.Router, v => v.RoutedViewHost.Router).DisposeWith(d); Observable.FromEventPattern <NavigationViewSelectionChangedEventArgs>(NavigationView, nameof(NavigationView.SelectionChanged)) .Subscribe(args => { if (args.EventArgs.IsSettingsSelected) { ViewModel.Router.Navigate.Execute(settingViewModel); return; } if (args.EventArgs.SelectedItem is not NavigationViewItem { Tag: string tag }) { return; } switch (tag) { case @"1": { ViewModel.Router.Navigate.Execute(rfc5780ViewModel); break; } case @"2": { ViewModel.Router.Navigate.Execute(rfc3489ViewModel); break; } } }).DisposeWith(d); NavigationView.SelectedItem = NavigationView.MenuItems.OfType <NavigationViewItem>().First(); });
public RFC5780View(RFC5780ViewModel viewModel) { InitializeComponent(); ViewModel = viewModel; this.WhenActivated(d => { this.OneWayBind(ViewModel, vm => vm.Result5389.BindingTestResult, v => v.BindingTestTextBox.Text, res => res.ToString() ) .DisposeWith(d); this.OneWayBind(ViewModel, vm => vm.Result5389.MappingBehavior, v => v.MappingBehaviorTextBox.Text, res => res.ToString() ) .DisposeWith(d); this.OneWayBind(ViewModel, vm => vm.Result5389.FilteringBehavior, v => v.FilteringBehaviorTextBox.Text, res => res.ToString() ) .DisposeWith(d); this.Bind(ViewModel, vm => vm.Result5389.LocalEndPoint, v => v.LocalAddressTextBox.Text, ipe => ipe is null ? string.Empty : ipe.ToString(), NetUtils.ParseEndpoint ) .DisposeWith(d); this.OneWayBind(ViewModel, vm => vm.Result5389.PublicEndPoint, v => v.MappingAddressTextBox.Text, ipe => ipe is null ? string.Empty : ipe.ToString() ) .DisposeWith(d); this.BindCommand(ViewModel, vm => vm.DiscoveryNatType, v => v.DiscoveryButton).DisposeWith(d); this.Events() .KeyDown .Where(x => x.Key == Key.Enter && DiscoveryButton.Command.CanExecute(default))