2017-10-20 45 views
0

我試圖改變我的組合框的值,當前面的組合框被選中,但它不工作。我需要設置我的組合框的值取決於其他組合框的選擇

這裏是我的代碼:

當窗體加載我填第一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; 

,我需要改變這個cmbTaxes的值,如果招行上述選擇(CmbGroups),所以當中巴以上選擇下一個我做的事:

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」;''是對Id'一個屬性的名稱,或財產的價值?如果它是一個屬性的* name *,你想要的是'cmbTaxes.SelectedValuePath =「Id」;'另外,請考慮dymanoid的建議在XAML中使用綁定來完成。這將是非常簡單和直接的方式。 –

+3

不是很重要的問題,但無論如何:爲什麼你不使用任何'綁定',而是直接在代碼隱藏中設置屬性?我們處於WPF世界... – dymanoid

+0

@ mm8列表 listOfActiveTaxes = TaxesController.SelectAll(); –

回答

1

設置的cmbTaxes爲 「ID」 的SelectedValuePath屬性:

cmbTaxes.SelectedValuePath = "Id"; 

...和它的SelectedValue屬性設置爲的IdTax

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

你能解釋這是爲什麼嗎? –

+0

這就是SelectedValue的工作原理。將其設置爲與要選擇的項目的SelectedValuePath屬性指定的屬性值相匹配的值。 – mm8

+0

我以爲我需要在那裏使用SelectedItem,因爲我認爲這都是關於SelectedItem的。 –

相關問題