WPF ComboBox设置所选值

时间:2019-04-08 21:21:54

标签: wpf combobox

不确定我为什么不能使它正常工作。我在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;
                }
            }

3 个答案:

答案 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指定值或字段名;就像我上面显示的那样设置它。