我在页面加载事件中填充了ComboBox
。在填充ComboBox
之后,我调用另一个方法,该方法返回一个值,我想在ComboBox
时使Page loads
的默认值为selectedIndex
。如何将ComboBox
更改为调用其他方法时返回的值?
<ComboBox Name="cboProductType" DisplayMemberPath="ProductTypeName" SelectedValuePath="ProductTypeID" SelectedIndex="0"/>
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
我希望我的问题很清楚
答案 0 :(得分:2)
SelectedIndex
仅在手动填充组合框时有效。如果您使用ItemsSource
来填充组合框中的项目,则必须定义SelectedValuePath
,然后您可以使用SelectedItem
属性来设置/获取所选项目。当使用绑定到DataContext
来绑定控件时,SelectedValuePath
应该是将父/子连接在一起的属性。