private void EditAccountConfig(string vendor) { ListView lv = (ListView)this.FindName("lv_" + vendor + "_acc"); if (lv.SelectedIndex != -1) { AccountConfig ac = new AccountConfig(); ac.txtName.IsReadOnly = true; ac.Owner = this; string prop = vendor.ToUpper() + "Account"; AccountOption accOpt = (dynamic)settings.GetType().GetProperty(prop).GetValue(settings); ac.chkIsEnabled.IsEnabled = CheckIfActivateEnabled(accOpt); ObservableCollection <ConnectionParam> aos = accOpt.Accounts; ConnectionParam ao = aos[lv.SelectedIndex]; ac.AccName = ao.AccName; ac.Host = ao.Host; ac.Port = ao.Port; ac.ClientId = ao.ClientId; ac.IsActivate = ao.IsActivate; ac.IsMulti = ao.IsMulti; ac.ShowDialog(); if ((bool)ac.DialogResult) { ao.AccName = ac.AccName; ao.Host = ac.Host; ao.Port = ac.Port; ao.ClientId = ac.ClientId; ao.IsActivate = ac.IsActivate; ao.IsMulti = ac.IsMulti; if (accOpt.IsExclusive && ac.IsActivate) { foreach (ConnectionParam cp in accOpt.Accounts) { if (cp.AccName != ao.AccName) { cp.IsActivate = false; } } } accOpt.Accounts = new ObservableCollection <ConnectionParam>(aos); } } }