开发者

Why SelectedItem property does not work with ComboBoxItem strings?

开发者 https://www.devze.com 2023-03-01 11:30 出处:网络
I want to select combobox items by their string value but I have a problem. A simple test: <ComboBox SelectedItem=\"text1\" ItemsSource=\"{Binding MyListOfStrings}\">

I want to select combobox items by their string value but I have a problem. A simple test:

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

MyListOfS开发者_JAVA百科trings has list with strings "text1", "text2", "text3". This way it works fine - the text1 gets selected.

But the following way does not work:

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

What is wrong with it? Why WPF cannot find text1 if I define items in XAML?

P.S. Actually SelectedItem uses data binding, I just simplified the example.


you can set the selected item with Selector.IsSelected="True" for that ComboItem

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

Edit :

if you are using Binding, creat a ComboBoxItem property

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

and Bind

SelectedItem="{Binding Path=MyProperty}"


I guess it doesn't work because ComboBoxItem is not a string, and there is no converter from string to ComboBoxItem. But ComboBoxItem offers a "IsSelected" property that you could use.

0

精彩评论

暂无评论...
验证码 换一张
取 消