Я пытаюсь связать значения перечисления с полем со списком, но поле со списком остается пустым без вариантов выбора.
Это определение xaml поля со списком:
<ComboBox Grid.Row = "2" Grid.Column = "1" ItemsSource = "{Binding Path=SkillItemSource}" SelectedItem = "{Binding Path=neededSkill, Mode=TwoWay}" SelectedIndex = "0" Margin = "5" MinWidth = "100"></ComboBox>
И это источник элементов и выбранный элемент, которые определены в cs окна:
public Skill neededSkill = Skill.FirstSkill;
public string[] SkillItemSource
{
get
{
return Enum.GetNames(typeof(Skill));
}
}
Чего не хватает, чтобы значения отображались в поле со списком?
Вы не можете установить SelectedItem для типа Skill, в то время как ItemsSource Combobox имеет тип string[].





What is missing for the values to appear in the combobox?
Вам нужно установить DataContext элемента ComboBox или родительского элемента в экземпляр класса, в котором определено свойство SkillItemSource. Если свойство определено в коде программной части, вы можете просто установить DataContext для самого представления: this.DataContext = this;
Также нельзя смешивать типы. Если ItemsSource связано с IEnumerable<string>, свойство SelectedItem должно быть связано со свойством string.
Также обратите внимание, что neededSkill должен быть определен как общедоступный имущество, чтобы вы могли к нему привязаться.
Попробуй это:
public Skill neededSkill { get; set; } = Skill.FirstSkill;
public IEnumerable<Skill> SkillItemSource { get; } = Enum.GetValues(typeof(Skill)).Cast<Skill>();
Нужно ли устанавливать DataContext, даже если он определен в xaml.cs того же окна?
да. Если свойство определено в коде программной части, вы можете просто установить DataContext для самого представления: this.DataContext = this;