private void DevicesView_SelectionChanged(object sender, SelectionChangedEventArgs e) { var newlySelectedDevice = (Model.Device)(e.AddedItems.SingleOrDefault()); DisconnectToDeviceButton.ClearValue(IsEnabledProperty); if (newlySelectedDevice == null) { //ConnectToDeviceButton.Visibility = Visibility.Collapsed; //DisconnectToDeviceButton.Visibility = Visibility.Collapsed; DisconnectToDeviceButton.IsEnabled = false; ConnectToDeviceButton.IsEnabled = false; RemoveDeviceButton.IsEnabled = false; EditDeviceButton.IsEnabled = false; return; } ConnectToDeviceButton.Visibility = Visibility.Visible; DisconnectToDeviceButton.Visibility = Visibility.Visible; ConnectToDeviceButton.IsEnabled = !newlySelectedDevice.Connected; DisconnectToDeviceButton.IsEnabled = newlySelectedDevice.Connected; var newBinding = new Binding { Source = newlySelectedDevice, Path = new PropertyPath("Connected"), Mode = BindingMode.TwoWay }; DisconnectToDeviceButton.SetBinding(IsEnabledProperty, newBinding); RemoveDeviceButton.IsEnabled = true; EditDeviceButton.IsEnabled = true; }
private async void ConnectToDeviceButton_Tapped(object sender, TappedRoutedEventArgs e) { var device = (Model.Device)DevicesView.SelectedItem; if (device == null) { return; } var terminals = Terminals.Instance; var destinationUri = new Uri(device.Destination); var terminalInstance = terminals.Where(x => x.Connection.Destination.Equals(destinationUri)).SingleOrDefault(); if (terminalInstance == null) { terminalInstance = new TerminalInstance(); terminalInstance.PropertyChanged += TerminalInstance_PropertyChanged; terminals.Add(terminalInstance); } var username = string.Empty; var password = string.Empty; if (device.AuthenticationMethod == Model.EAuthenticationMethod.NoAuthentication) { } else if (device.AuthenticationMethod == Model.EAuthenticationMethod.UsernamePassword) { username = device.Username; password = await device.Password.Unprotect(); } else { var authenticationProfile = Model.Context.Current.AuthenticationProfiles.Where(x => x.Id == device.AuthenticationProfileId).SingleOrDefault(); if (authenticationProfile == null) { System.Diagnostics.Debug.WriteLine("Failed to find an authentication profile"); return; } username = authenticationProfile.Username; password = await device.Password.Unprotect(); } DisconnectToDeviceButton.ClearValue(IsEnabledProperty); var newBinding = new Binding { Source = device, Path = new PropertyPath("Connected"), Mode = BindingMode.TwoWay }; DisconnectToDeviceButton.SetBinding(IsEnabledProperty, newBinding); if (!terminalInstance.ConnectTo(new Uri(device.Destination), username, password)) { System.Diagnostics.Debug.WriteLine("Failed to connect to destination"); return; } }