У меня есть ObservableCollection, который получает его данные из DataTable, который заполняется из базы данных Postgres. Мне нужно привязать этот ObservableCollection к ComboBoxColumn в DataGrid. Я видел довольно много примеров того, как это сделать, но я постоянно что-то пропускаю.wpf привязка combobox к наблюдаемой коллекции
Edit: Это новый обновленный код и он работает на INotifyPropertyChanged, что я задал только "имя" (пока)
namespace Country_namespace
{
public class CountryList : ObservableCollection<CountryName>
{
public CountryList():base()
{
// Make the DataTables and fill them
foreach(DataRow row in country.Rows)
{
Add(new CountryName((string)row.ItemArray[1], (int)row.ItemArray[0]));
}
}
}
public class CountryName: INotifyPropertyChanged
{
private string name;
private int id_country;
public event PropertyChangedEventHandler PropertyChanged;
public CountryName(string country_name, int id)
{
this.name = country_name;
this.id_country = id;
}
public string Name
{
get { return name; }
set {
name = value;
OnPropertyChanged("CountryName");
}
}
public int idcountry
{
get { return id_country; }
set { id_country = value; }
}
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
}
кромеXAML:
xmlns:c="clr-namespace:Country_namespace"
<Windows.Resources>
<c:CountryList x:Key="CountryListData"/>
</Windows.Resources>
DataGrid Column:
<dg:DataGridTemplateColumn Header="country">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Source={StaticResource CountryListData}}" DisplayMemberPath="Name"></ComboBox>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
«DataContext должен сделать ставку, установленные на ObservableCollection country_» Это может быть неправильным. – David
Нет Я не реализовал INotifyPropertyChanged. И это одна из причин, почему я задаю этот вопрос. Я полностью озадачен, когда дело доходит до ObservableCollections, поскольку я никогда не использовал их раньше. –