У меня есть класс ученика, который определяет свойства ученика следующим образом
public class Student
{
public string Department { get; set; }
public string Level { get; set; }
public Gender Gender { get; set; }
public string Nationality { get; set; }
}
У меня есть другой класс, который содержит список стран в коллекции, объявленной, как показано ниже
public class Countries
{
public static ObservableCollection<string> Nationalities { get; } = new ObservableCollection<string>()
{
"Afghanistan",
"Albania",
"Algeria",
"Andorra",
"Angola",
"Anguilla",
"Antigua & Barbuda",
"Argentina",
"Armenia",
"Australia",
"Austria",
"Azerbaijan",
"Bahamas",
"Bahrain",
"Bangladesh",
"Barbados",
"Belarus",
"Belgium",
"Belize",
"Benin",
"Bermuda",
"Bhutan",
"Bolivia",
"Bosnia & Herzegovina",
"Botswana",
"Brazil",
}
В моей модели представления я объявил наблюдаемую коллекцию, которая инициализируется в списке стран.Это делается внутри конструктора моделей представлений, как показано ниже
public class ViewModel : BaseViewModel
{
public ObservableCollection<string> Nationalities { get; private set; }
public ViewModel()
{
// Set the nationality list
Nationalities = Countries.Nationalities;
}
}
Теперь я создал свой DataGridComboBoxColumn примерно так:
<DataGrid.Columns>
<DataGridComboBoxColumn Width="Auto"
SelectedItemBinding="{Binding Path=Student.Nationality}"
Header="Nationality"
x:Name="NationalityComboBox2">
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.Nationalities, ElementName=StudentListGrid}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
Когда я запускаю свое приложение, DataGridComboBoxColumn имеет всестраны, но когда я выбираю конкретную страну, она не отображается. Я видел подобные вопросы в Интернете, но я не видел ни одного ответа, который бы работал в моем случае.Есть предложения?