DataGridColumnHeader изменить значок на столбец - PullRequest
0 голосов
/ 24 июня 2019

Я хотел бы изменить свой значок в заголовке столбца Datagrid в WPF.(Например, Фильтр Excel)

У меня есть таблица данных с 3 столбцами: Nom - Версия - Editeur

Я использую datatrigger (XAML) и меняю свою переменную (True / False) в своем коде.

Моя проблема: Когда я меняю свою переменную (пример EditeurGroupe = True), мой значок столбца меняется для столбцов.Я хочу изменить только один столбец.

Спасибо за помощь

enter image description here

<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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...