コード例 #1
0
        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();
            });
コード例 #2
0
        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))