/// <summary>Обработчик события кнопки редактирования сервера</summary> private void OnEditServerButtonClick(object Sender, RoutedEventArgs E) { if (!(cbSmtpSelect.SelectedItem is Server server)) { return; } var name = server.Name; var address = server.Address; var port = server.Port; var ssl = server.UseSSL; var description = server.Description; var login = server.Login; var password = server.Password; if (!ServerEditDialog.ShowDialog("Редактирование сервера", ref name, ref address, ref port, ref ssl, ref description, ref login, ref password)) { return; } server.Name = name; server.Address = address; server.Port = port; server.UseSSL = ssl; server.Description = description; server.Login = login; server.Password = password; cbSmtpSelect.ItemsSource = null; cbSmtpSelect.ItemsSource = TestData.Servers; cbSmtpSelect.SelectedItem = server; }
/// <summary> /// Метод, позволяющий отобразить диалог для редактирования данных /// Редактируемые параметры передаются по ссылке /// Если пользователь выбрал Ok, то метод возвращает true /// Если пользователь выбрал Cancel, то параметры не меняются. /// </summary> public static bool ShowDialog( string Title, ref string Name, ref string Address, ref int Port, ref bool UseSSL, ref string Description, ref string Login, ref string Password) { var window = new ServerEditDialog { Title = Title, ServerName = { Text = Name }, ServerAddress = { Text = Address }, ServerPort = { Text = Port.ToString() }, ServerSSL = { IsChecked = UseSSL }, Login = { Text = Login }, Password = { Password = Password }, ServerDescription = { Text = Description }, Owner = Application.Current.Windows.Cast <Window>().FirstOrDefault(window => window.IsActive) }; if (window.ShowDialog() != true) { return(false); } Name = window.ServerName.Text; Address = window.ServerAddress.Text; Port = int.Parse(window.ServerPort.Text); Login = window.Login.Text; Password = window.Password.Password; return(true); }
// Добавляем статические методы для удобства работы с диалогом /// <summary> /// Метод, позволяющий отобразить диалог для редактирования данных /// Редактируемые параметры передаются по ссылке /// Если пользователь выбрал Ok, то метод возвращает true /// Если пользователь выбрал Cancel, то параметры не меняются. /// </summary> public static bool ShowDialog( string Title, ref string Name, ref string Address, ref int Port, ref bool UseSSL, ref string Description, ref string Login, ref string Password) { // Создаём окно и инициализируем его свойства var window = new ServerEditDialog { Title = Title, // Так можно инициализировать свойства вложенных объектов ServerName = { Text = Name }, ServerAddress = { Text = Address }, ServerPort = { Text = Port.ToString() }, ServerSSL = { IsChecked = UseSSL }, Login = { Text = Login }, Password = { Password = Password }, ServerDescription = { Text = Description }, // Берём класс "Приложение" Owner = Application // получаем экземпляр текущего приложения .Current // берём все окна приложения .Windows // пеерводим их из интерфейса IEnumerable в IEnumerable<Window> .Cast <Window>() // находим первое окно, у которого свойство IsActive == true .FirstOrDefault(window => window.IsActive) }; if (window.ShowDialog() != true) { return(false); } Name = window.ServerName.Text; Address = window.ServerAddress.Text; Port = int.Parse((window.ServerPort.Text == "") ? "25" : window.ServerPort.Text); Login = window.Login.Text; Password = window.Password.Password; Description = window.ServerDescription.Text; return(true); }