为什么SelectedItem属性不能与ComboBoxItem字符串一起工作



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

<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 ?

注:实际上SelectedItem使用了数据绑定,我只是简化了这个例子。

您可以将ComboItem设置为Selector.IsSelected="True"

<ComboBox>
 <ComboBoxItem Selector.IsSelected="True">text1</ComboBoxItem>
 <ComboBoxItem>text2</ComboBoxItem>
 <ComboBoxItem>text3</ComboBoxItem>
</ComboBox>
编辑:

如果你正在使用绑定,创建一个ComboBoxItem属性

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

绑定
SelectedItem="{Binding Path=MyProperty}"

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

最新更新