为什么SelectedItem属性不适用于ComboBoxItem字符串?

时间:2011-04-28 09:01:18

标签: combobox wpf-controls selecteditem

我想按字符串值选择组合框项目,但我遇到了问题。 一个简单的测试:

<ComboBox SelectedItem="text1" ItemsSource="{Binding MyListOfStrings}">
</ComboBox>

MyListOfStrings包含字符串“text1”,“text2”,“text3”的列表。这种方式工作正常 - text1被选中。

但是以下方式不起作用:

<ComboBox SelectedItem="text1">
 <ComboBoxItem>text1</ComboBoxItem>
 <ComboBoxItem>text2</ComboBoxItem>
 <ComboBoxItem>text3</ComboBoxItem>
</ComboBox>

它出了什么问题?如果我在XAML中定义项目,为什么WPF找不到text1?

P.S。实际上SelectedItem使用数据绑定,我只是简化了示例。

2 个答案:

答案 0 :(得分:1)

我猜它不起作用,因为ComboBoxItem不是一个字符串,并且没有从字符串到ComboBoxItem的转换器。 但是ComboBoxItem提供了一个可以使用的“IsSelected”属性。

答案 1 :(得分:1)

您可以为Selector.IsSelected="True"

设置ComboItem的所选项目
<ComboBox>
 <ComboBoxItem Selector.IsSelected="True">text1</ComboBoxItem>
 <ComboBoxItem>text2</ComboBoxItem>
 <ComboBoxItem>text3</ComboBoxItem>
</ComboBox>

编辑:

如果您正在使用Binding,则创建一个ComboBoxItem属性

 public ComboBoxItem MyProperty
    {
        get
        {
            ComboBoxItem ci = new ComboBoxItem();
            ci.Content = "text1";
            return ci;
        }
    }

和Bind

SelectedItem="{Binding Path=MyProperty}"