Я хотел бы изменить свой значок в заголовке столбца Datagrid в WPF.(Например, Фильтр Excel)
У меня есть таблица данных с 3 столбцами: Nom - Версия - Editeur
Я использую datatrigger (XAML) и меняю свою переменную (True / False) в своем коде.
Моя проблема: Когда я меняю свою переменную (пример EditeurGroupe = True), мой значок столбца меняется для столбцов.Я хочу изменить только один столбец.
Спасибо за помощь
![enter image description here](https://i.stack.imgur.com/jnswT.png)
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Height" Value="30"></Setter>
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="24"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="24"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button x:Name="BtnGroup" Grid.Column="0" Background="Transparent" BorderBrush="Transparent" HorizontalAlignment="Left" Height="16" Width="16" Click="BtnGrouper_Click">
<StackPanel>
<Image Stretch="Fill">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="Images/GrouperColonne.png"/>
<Style.Triggers>
<!--<DataTrigger Binding="{Binding MainWindow.EditeurGroupe, Mode=TwoWay}" Value="False">-->
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=EditeurGroupe}" Value="False">
<Setter Property="Source" Value="Images/GrouperColonne.png"/>
</DataTrigger>
<!--<DataTrigger Binding="{Binding MainWindow.EditeurGroupe, Mode=TwoWay}" Value="True">-->
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=EditeurGroupe}" Value="True">
<Setter Property="Source" Value="Images/SupprimerGrouperColonne.png"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</StackPanel>
</Button>
<TextBlock Grid.Column="1" Text="{Binding}"/>
<Button Grid.Column="2" Background="Transparent" BorderBrush="Transparent" HorizontalAlignment="Right" Height="16" Width="16" Click="BtnFilter_Click">
<StackPanel>
<Image Name="ImgFiltre" Stretch="Fill">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="Images/Filtre.png"/>
<Style.Triggers>
<!--<DataTrigger Binding="{Binding EditeurFiltre}" Value="True">-->
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Image}}, Path=DataContext.EditeurFiltre}" Value="True">
<Setter Property="Source" Value="Images/FiltreAjouter.png"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</StackPanel>
</Button>
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Resources>
Моя кнопка события:
Private Sub BtnGrouper_Click(sender As Object, e As RoutedEventArgs) Handles BtnGrouper.Click
Try
Dim Colonne As DataGridColumnHeader = FindParentColumn(sender)
MessageBox.Show("Nom de la colonne : " & Colonne.Column.Header)
Dim ButtonGroup As Button = sender
LogicielVueCollection = CollectionViewSource.GetDefaultView(Me.DataGridLogiciel.ItemsSource)
LogicielVueCollection.GroupDescriptions.Add(New PropertyGroupDescription(Colonne.Column.Header))
Me.ListeGroupeColonne.Items.Clear()
Dim DernierGroupe As TreeViewItem = Nothing
For Each Groupe As PropertyGroupDescription In LogicielVueCollection.GroupDescriptions
Dim NouveauGroupe As New TreeViewItem
NouveauGroupe.Header = Groupe.PropertyName
NouveauGroupe.IsExpanded = True
If Me.ListeGroupeColonne.Items.Count = 0 Then
Me.ListeGroupeColonne.Items.Add(NouveauGroupe)
Else
DernierGroupe.Items.Add(NouveauGroupe)
End If
DernierGroupe = NouveauGroupe
Next
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub