Почему свойство SelectedItem не работает со строками ComboBoxItem? - PullRequest
0 голосов
/ 28 апреля 2011

Я хочу выбрать элементы комбинированного списка по их строковому значению, но у меня проблема. Простой тест:

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

MyListOfStrings имеет список со строками "text1", "text2", "text3". Таким образом, он работает нормально - текст1 выделен.

Но следующий способ не работает:

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

Что с ним не так? Почему WPF не может найти text1, если я определяю элементы в XAML?

P.S. На самом деле SelectedItem использует привязку данных, я просто упростил пример.

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Вы можете установить выбранный элемент с помощью 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}"
1 голос
/ 28 апреля 2011

Я думаю, это не работает, потому что ComboBoxItem не является строкой, и нет конвертера из строки в ComboBoxItem.Но ComboBoxItem предлагает свойство IsSelected, которое вы можете использовать.

...