2017-10-20 27 views
0

J'ai essayé de changer la valeur de ma combobox quand la combobox précédente est sélectionnée, mais cela ne fonctionne pas.J'ai besoin de définir la valeur de ma ComboBox en fonction de la sélection d'autres ComboBox

Voici mon code:

Lorsque les formes chargent je remplir d'abord ComboBox:

List<Tax> listOfActiveTaxes = TaxesController.SelectAll(); 

int IndexOfTax = TaxesController.SelectAll().FindIndex(a => a.Value == DefaultTaxValue); 

cmbTaxes.ItemsSource = listOfActiveTaxes; 
cmbTaxes.DisplayMemberPath = "Description"; 
cmbTaxes.SelectedValue = "Id"; 
cmbTaxes.SelectedIndex = IndexOfTax; 

et je dois changer la valeur de cette cmbTaxes si Cmb ci-dessus est sélectionné (CmbGroups), alors quand cmb ci-dessus est sélectionné, je l'ai fait suivant:

private void cmbGroups_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 

    var selectedGroup = (Group)cmbGroups.SelectedItem; 
    if (selectedGroup != null && selectedGroup.Id > 0) 
    { 

    //Not changing when I select any Group 
    cmbTaxes.SelectedItem = selectedGroup.Tax; 
    } 

} 
+1

'cmbTaxes.SelectedValue = "Id",' 'est Id' le nom d'une propriété, ou la valeur d'une propriété? Si c'est le * nom * d'une propriété, ce que vous voulez est 'cmbTaxes.SelectedValuePath =" Id ";' Aussi, veuillez considérer la suggestion de dymanoid de le faire en XAML avec des liaisons. Ce sera très simple et direct de cette façon. –

+3

Question pas vraiment importante, mais quoi qu'il en soit: pourquoi n'utilisez-vous pas de 'Binding's, mais définissez plutôt directement les propriétés dans le code-behind? Nous sommes dans un monde WPF ... – dymanoid

+0

@ mm8 Liste listOfActiveTaxes = TaxesController.SelectAll(); –

Répondre

1

Définissez la propriété SelectedValuePath de cmbTaxes à "Id":

cmbTaxes.SelectedValuePath = "Id"; 

... et définir la propriété de SelectedValue au Id du Tax:

private void cmbGroups_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var selectedGroup = (Group)cmbGroups.SelectedItem; 
    if (selectedGroup != null && selectedGroup.Id > 0) 
    { 
     cmbTaxes.SelectedValue = selectedGroup.Tax.Id; 
    } 
} 
+0

Pouvez-vous expliquer pourquoi est-ce? –

+0

Voici comment fonctionne SelectedValue. Vous le définissez à une valeur qui correspond à la valeur de la propriété spécifiée par la propriété SelectedValuePath de l'élément à sélectionner. – mm8

+0

Je pensais que je devais utiliser SelectedItem là, parce que je pensais que tout cela est à propos de SelectedItem .. –