Подтвердить что ты не робот

Связывание WPF Combobox со списком <string>

У меня есть два свойства, один из которых представляет собой список строк, а другой - только строку.

private List<String> _property;
public List<String> Property
get
{
return new List<string>(){"string1", "string2"};
}
set{_property = value
}

public String SimpleStringProperty{get;set;}

У меня также есть Combobox, определенный в XAML как таковой

<Combobox ItemsSource="{Binding Property , Mode="TwoWay"}" Text="Select Option" />    

Теперь combobox правильно отображает две опции: "string1" и "string2"

Когда пользователь выбирает тот или другой, я хочу установить SimpleStringProperty с этим значением. Тем не менее, "значение" im, возвращающееся из combobox через двухстороннюю привязку, не является выбранным, а List<String>. Как я могу сделать это правильно? Я новичок в wpf, поэтому, пожалуйста, извините дилетантство.

4b9b3361

Ответ 1

<Combobox ItemsSource="{Binding Property}" SelectedItem="{Binding SimpleStringProperty, Mode=TwoWay}" Text="Select Option" />

Это непроверено, но оно должно быть по крайней мере близко к тому, что вам нужно.

Ответ 2

Вам необходимо привязать свойство String с помощью свойства SelectedItem combobox.

<Combobox ItemsSource="{Binding Property}" 
          SelectedItem="{Binding SimpleStringProperty}" 
          IsSynchronizedWithCurrentItem="True" 
          Text="Select Option" />

Ответ 3

Что помогло мне:

  1. Использование SelectedItem
  2. Добавление UpdateSourceTrigger= PropertyChanged
  3. IsSynchronizedWithCurrentItem= "True", чтобы убедиться, что выбранный элемент всегда синхронизирован с фактическим значением
  4. Mode= TwoWay, если вам нужно обновить как из источника, так и из GUI

Таким образом, в конце лучший способ, если источник

List<string>

Пример:

 <ComboBox 
    IsSynchronizedWithCurrentItem="True"
    ItemsSource="{Binding SomeBindingPropertyList}"
    SelectedItem="{Binding SomeBindingPropertySelectedCurrently, 
                    Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

Дополнительная информация