2017-10-20 47 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的。 –

相关问题