Here is my demo to add a connection in DataGridComboBoxColumn:
The xaml code:
<Button Width="120" Height="36" Click="Button_Click" VerticalAlignment="Bottom"></Button>
<DataGrid Name="myDataGrid" AutoGenerateColumns="False" ItemsSource="{Binding GridItems}" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" />
<DataGridComboBoxColumn SelectedValueBinding="{Binding PhoneMumberID}" DisplayMemberPath="Name" SelectedValuePath="ID">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.PhoneMumberItems, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.PhoneMumberItems, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
The cs code is:
ViewModel viewModel = new ViewModel();
public Window1()
{
InitializeComponent();
this.DataContext = viewModel;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
viewModel.GridItems.Add( new GridItem() { Name = "Jim4", PhoneMumberID = 4 } );
viewModel.PhoneMumberItems.Add(new PhoneMumberItem() { ID = 4, Name = "Mumber 4" });
}
}
public class GridItem
{
public string Name { get; set; }
public int PhoneMumberID { get; set; }
}
public class PhoneMumberItem
{
public int ID { get; set; }
public string Name { get; set; }
}
public class ViewModel
{
public ViewModel()
{
GridItems = new ObservableCollection<GridItem>()
{
new GridItem() { Name = "Jim1", PhoneMumberID = 1 } ,
new GridItem() { Name = "Jim2", PhoneMumberID = 2 } ,
new GridItem() { Name = "Jim3", PhoneMumberID = 3 } ,
};
PhoneMumberItems = new ObservableCollection<PhoneMumberItem>() {
new PhoneMumberItem() { ID = 1, Name = "Mumber 1" },
new PhoneMumberItem() { ID = 3, Name = "Mumber 3" },
new PhoneMumberItem() { ID = 2, Name = "Mumber 2" } };
}
public ObservableCollection<GridItem> GridItems { get; set; }
public ObservableCollection<PhoneMumberItem> PhoneMumberItems { get; set; }
}
If this can't give you some help, please show your code which can reproduce the error for me to analyze.
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.