不确定我为什么不能使它正常工作。我在WPF中有一个组合框。想要遍历所有控件并在符合条件的位置设置为活动状态。我找到了匹配项,但似乎无法设置该值。此示例以“选定值”方法为基础建模... Set SelectedItem of WPF ComboBox
bool match = false;
foreach (ComboBoxItem cbi in cb_Divisinos.Items)
{
if (cbi.Content.ToString().Split('-')[0].Trim() == family.Division.ToString()) {
cb_Divisinos.SelectedValue = cbi.Content.ToString();
match = true;
}
}
答案 0 :(得分:0)
如果我能看到您的XAML,这会有所帮助,但是如果我不得不猜测,我很可能说您没有在XAML中的ComboBox元素上设置SelectedValuePath。
<ComboBox Grid.Row="1" Grid.Column="0"
Name="combo" SelectedValuePath="Content">
但是,为了使此过程正常运行,还应该在XAML中定义项目,而不是通过绑定的项目源进行定义。如果要绑定到Items Source,则需要使用SelectedItem方法。
如果我现在可以做评论,我会的,但是,I,我创建了一个新的个人资料,但是我不能。
答案 1 :(得分:0)
如果您的ComboBox
明确地填充了ComboBoxItems
,如下所示:
<ComboBox x:Name="cb_Divisinos">
<ComboBoxItem>Division A - xyz</ComboBoxItem>
<ComboBoxItem>Division B - abc</ComboBoxItem>
</ComboBox>
...您只需将SelectedItem
属性设置为要选择的ComboBoxItem:
bool match = false;
foreach (ComboBoxItem cbi in cb_Divisinos.Items)
{
if (cbi.Content.ToString().Split('-')[0].Trim() == family.Division.ToString())
{
cb_Divisinos.SelectedItem = cbi;
match = true;
break;
}
}
答案 2 :(得分:0)
另一种对我更有效的方法是使用SelectedIndex选择项目,如下所示:
bool match = false;
int selectedIndexNumber = 0;
foreach (ComboBoxItem cbi in cb_Divisinos.Items)
{
if (cbi.Content.ToString().Split('-')[0].Trim() == family.Division.ToString()) {
cb_Divisinos.SelectedValue = cbi.Content.ToString();
match = true;
break;
}
selectedIndexNumber += 1;
}
然后应用选定的索引,例如...
cb_Divisinos.SelectedIndex = selectedIndexNumber;
在ComboBox中设置SelectedIndex的绑定...
<ComboBox Name="cb_Divisinos" ItemsSource="{Binding }"
DisplayMemberPath="Name"
SelectedValuePath="CategoryID" SelectedIndex="{Binding Mode=OneWay}">
</ComboBox>
您无需为SelectedIndex Binding指定值或字段名;就像我上面显示的那样设置它。