Welcome to our Microsoft Q&A platform!
I will provide some methods to bind the data for ComboBox in DataGrid for you to try.
Method 1:
<Page.Resources>
<CollectionViewSource x:Key="ItemsCVS" Source="{Binding ColumnItems}" />
</Page.Resources>
…
<DataGridComboBoxColumn ItemsSource="{Binding Source={StaticResource ItemsCVS}}" Header="Gender" SelectedValueBinding="{Binding ColumnID}" DisplayMemberPath="Name" SelectedValuePath="ID"
>
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.ColumnItems, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.ColumnItems, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
Method 2:
<DataGridComboBoxColumn SelectedValueBinding="{Binding ColumnID}" DisplayMemberPath="Name" SelectedValuePath="ID">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.ColumnItems, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.ColumnItems, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
Method 3:
<DataGridTemplateColumn Header="MyComboBox">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding DataContext.Column, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
SelectedValuePath="MColumn.Id"
SelectedValue="{Binding ColumnId, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
>
<ComboBox.ItemTemplate>
<DataTemplate>
<Rectangle Fill="{Binding ColumnBrush}" Height="30" Width="30"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Thanks.