ComboBox.Items.IndexOf返回-1

时间:2016-01-25 09:14:04

标签: c# silverlight combobox indexof selectedindex

我在页面加载事件中填充了ComboBox。在填充ComboBox之后,我调用另一个方法,该方法返回一个值,我想在ComboBox时使Page loads的默认值为selectedIndex。如何将ComboBox更改为调用其他方法时返回的值?

<ComboBox Name="cboProductType" DisplayMemberPath="ProductTypeName" SelectedValuePath="ProductTypeID" SelectedIndex="0"/>

的XAML
void OnProductDetailLoad(object sender, RoutedEventArgs e)
{
   GetServiceReference.Service1Client service = new GetServiceReference.Service1Client();
   service.GetProductDetailsCompleted += service_GetProductDetailsCompleted;
   service.GetProductTypeCompleted += service_GetProductTypeCompleted;
   service.GetProductTypeAsync();
   service.GetProductDetailsAsync(ProductId);
}

页面加载事件:

void service_GetProductTypeCompleted(object sender, GetProductTypeCompletedEventArgs e)
{
    cboProductType.ItemsSource = e.Result;
}

页面加载时填充ComboBox:

ProductTypeName

调用返回特定ProductTypeName的其他方法。我试图获取该特定-1的索引但始终返回void service_GetProductDetailsCompleted(object sender, GetServiceReference.GetProductDetailsCompletedEventArgs e) { if (e.Result.Count != 0) { p.ProductID = e.Result[0].ProductID; int index = cboProductType.Items.IndexOf(e.Result[0].ProductTypeName); cboProductType.SelectedIndex = index; }

SelectedIndex

这也是设置ComboBox属性的正确方法吗? 假设我按照以下索引顺序在Index DisplayMemberName(ProductTypeName) 0 Color 1 Size 2 Variant 3 N-size 中加载了以下项目:

e.Result[0].ProductTypeName

Variant包含SelectedIndex = 2所以我现在想要if (backing != "he," && backing !=...的ComboBox

我希望我的问题很清楚

1 个答案:

答案 0 :(得分:2)

SelectedIndex仅在手动填充组合框时有效。如果您使用ItemsSource来填充组合框中的项目,则必须定义SelectedValuePath,然后您可以使用SelectedItem属性来设置/获取所选项目。当使用绑定到DataContext来绑定控件时,SelectedValuePath应该是将父/子连接在一起的属性。