
I have a DataGrid which has been filled with a DataTable using Itemsources properties, it means that all columns and rows have been created automatically.I need to add a combobox to each column header cell in my grid.
I have done that part using this piece of code :
<DataGrid Grid.Row="1" Margin="0 5 0 0" ItemsSource="{Binding SelectedExcel}">
   <DataGrid.ColumnHeaderStyle>
         <Style TargetType="{x:Type DataGridColumnHeader}">
             <Setter Property="ContentTemplate">
                 <Setter.Value>
                     <DataTemplate Template="">
                         <ComboBox ItemsSource="{Binding DataContext.ArticleAttributes, Source={x:Reference control}}" SelectedItem="{Binding DataContext.SelectedArticleAttribute, Source={x:Reference control}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                     </DataTemplate>
                 </Setter.Value>
             </Setter>
         </Style>
   </DataGrid.ColumnHeaderStyle>
</DataGrid>
The problem is when I select one of the items in one of the comboboxes the value of all the comboboxes will be changed. I have attached an image. Any idea how should I fix that? And also I need to know the combobox of which column has been set. I need to use that column later. I am well aware of DataGrid SelectedItem and SelectedIndex properties, any other ideas?
I tried to fix it this way:
<DataGrid.ColumnHeaderStyle>
                <Style TargetType="{x:Type DataGridColumnHeader}">
                    <Style.Triggers>
                        <DataTrigger Value="True">
                            <DataTrigger.Binding>
                                <MultiBinding Converter="{StaticResource MultiEquilityConverter}">
                                    <Binding RelativeSource="{RelativeSource Self}" />
                                    <Binding Path="CurrentColumn" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}" />
                                </MultiBinding>
                            </DataTrigger.Binding>
                        </DataTrigger>
                    </Style.Triggers>
                    <Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <ComboBox ItemsSource="{Binding DataContext.ArticleAttributes, Source={x:Reference control}}" SelectedItem="{Binding DataContext.SelectedArticleAttribute, Source={x:Reference control}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </DataGrid.ColumnHeaderStyle>
But the MultiEquilityConverter never fires.
I have been searching internet for two days, but I did not find any way yet.
                        
I have fixed it this way, for the combo boxes I have used this piece of code :
And for getting the column number this way :
As it has been mentioned above.