J'ai une application WPF avec deux ComboBox
Lorsque je sélectionne le premier les éléments liés à la première combobox seront renseignés sur la deuxièmeComment effacer les éléments sélectionnés collection
Voici ma sélection Propriété
public string SelectedApplication
{
set
{
if (_selectedApplication == value) return;
this._selectedApplication = value;
InitializeTransactionTypes();
}
get
{
return this._selectedApplication;
}
}
ici je vérifie un id correspondant entre les deux comboboxes pour peupler les éléments de la deuxième liste déroulante.
ObservableCollection<TransactionTypeViewModel> _transTypeObsList = new ObservableCollection<TransactionTypeViewModel>();
private void InitializeTransactionTypes()
{
if (_selectedApplication != null)
{
var getAppCode =
ApplicationVModel.GetAllApplications()
.FirstOrDefault(apps => apps.Name == _selectedApplication);
var transTypeList = TransactionTypeVModel.GetAllViewModelTransTypes()
.Where(t => getAppCode != null && t.Id == getAppCode.Id);
transactionTypes = new ObservableCollection<TransactionTypeViewModel>(transTypeList);
NotifyPropertyChanged("TransactionTypes");
}
}
Plus d'informations sur les méthodes:
Liste des VM mis en correspondance de la liste des modèles
public List<TransactionTypeViewModel> GetAllViewModelTransTypes()
{
TransactionTypeViewModels = TransactionTypeModel.GetAllTransactionTypes().Select(transType => new TransactionTypeViewModel
{
Id = transType.Id,
Name = transType.Name,
})
.ToList();
return TransactionTypeViewModels;
}
Disons que je sélectionner d'abord {a combobox A, B, C, D ...} et la deuxième combobox a {A'1, A'2, A'3}, quand je sélectionne l'élément de la première Combobox, le second combobo continue de remplir éléments. Je voulais montrer seulement {A'1 pour A} {B'1 pour B} ... etc mais maintenant ce qu'il fait c'est {A'1 A'1 A'1 ..... pour A} {B ' 1 B'1 B'1 .... pour B} pour chaque sélection.
Je veux que la sélection précédente soit effacée et affiche une nouvelle liste par sélection. Merci
Au lieu de recréer '_transTypeObsList' chaque fois dans' 'essayer de InitializeTransactionTypes' Clear() 'et' Ajouter (...) 'éléments un par un. – dkozl
pour être clair Je ne sais pas si c'est le problème mais vous créez votre liste à souvent. Au lieu de cela 'transactionTypes = new ObservableCollection ....' faire quelque chose comme 'transactionTypes.Clear(); foreach (....) transactionTypes.Add (....) ' –
dkozl
@dkozl Merci cela fonctionne pour moi ... J'ai effacé et ajouter pour chaque itération. –