我想按字符串值选择组合框项目,但我遇到了问题。 一个简单的测试:
<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使用数据绑定,我只是简化了示例。
答案 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}"