Связывание заголовка группы DataGrid с помощью DataGridColumnHeader C # - PullRequest
0 голосов
/ 20 января 2019

Я новичок в C # и WPF, я искал решение для моего вопроса в течение нескольких часов и ничего.

Итак, вопрос такой: у меня есть DataGrid, который имеет функцию группировки, котораяЯ сделал;Если пользователь щелкает заголовок столбца, он группирует элементы по свойству, представляющему столбец.Мне удалось сделать заголовки групп в следующем формате: "{Имя группы} {Количество элементов}"

, и я хочу, чтобы это было примерно так: "{Заголовок столбца}: {ГруппаИмя} {Items Count} "

Дело в том, что мне не удалось это сделать.

Есть мой XAML моей DataGrid, я очень надеюсь, что найду решение здесь ичто я не нарушаю никаких законов или дублирую что-либо, заранее спасибо:

<DataGrid x:Name="testerDataGrid" IsReadOnly="True" Width="800" RowDetailsVisibilityMode="VisibleWhenSelected"
                  ItemsSource="{Binding TestersCollection}" EnableRowVirtualization="True" AutoGenerateColumns="False" Sorting="TesterDataGrid_Sorting" >

            <DataGrid.GroupStyle>
                <GroupStyle>
                    <GroupStyle.HeaderTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Text="{Binding Path=Name}"/>
                            </StackPanel>
                        </DataTemplate>
                    </GroupStyle.HeaderTemplate>
                    <GroupStyle.ContainerStyle>
                        <Style TargetType="{x:Type GroupItem}">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type GroupItem}">
                                        <Expander>
                                            <Expander.Header>
                                                <StackPanel Orientation="Horizontal">
                                                    <StackPanel Orientation="Horizontal" Margin="0, 0, 0, 0">
                                                        <materialDesign:PackIcon Kind="ArrowDown"/>
                                                        <TextBlock Text="{Binding Path=Name}" Margin="0, 0, 10 , 0"/>
                                                        <TextBlock Text="("/>
                                                        <TextBlock Text="{Binding Path=ItemCount}" Margin="0,0,3,0"/>
                                                        <TextBlock Text="Trainees)"/>
                                                    </StackPanel>
                                                    <StackPanel Orientation="Horizontal" Margin="250, 0, 0, 0">
                                                        <materialDesign:PackIcon Kind="ArrowDown"/>
                                                        <TextBlock Text="{Binding Path=Name}" Margin="0, 0, 10 , 0"/>
                                                        <TextBlock Text="("/>
                                                        <TextBlock Text="{Binding Path=ItemCount}" Margin="0,0,3,0"/>
                                                        <TextBlock Text="Trainees)"/>
                                                    </StackPanel>
                                                    <StackPanel Orientation="Horizontal" Margin="250, 0, 0, 0">
                                                        <materialDesign:PackIcon Kind="ArrowDown"/>
                                                        <TextBlock Text="{Binding Path=Name}" Margin="0, 0, 10 , 0"/>
                                                        <TextBlock Text="("/>
                                                        <TextBlock Text="{Binding Path=ItemCount}" Margin="0,0,3,0"/>
                                                        <TextBlock Text="Trainees)"/>
                                                    </StackPanel>
                                                    <StackPanel Orientation="Horizontal" Margin="250, 0, 0, 0">
                                                        <materialDesign:PackIcon Kind="ArrowDown"/>
                                                        <TextBlock Text="{Binding Path=Name}" Margin="0, 0, 10 , 0"/>
                                                        <TextBlock Text="("/>
                                                        <TextBlock Text="{Binding Path=ItemCount}" Margin="0,0,3,0"/>
                                                        <TextBlock Text="Trainees)"/>
                                                    </StackPanel>
                                                    <StackPanel Orientation="Horizontal" Margin="250, 0, 0, 0">
                                                        <materialDesign:PackIcon Kind="ArrowDown"/>
                                                        <TextBlock Text="{Binding Path=Name}" Margin="0, 0, 10 , 0"/>
                                                        <TextBlock Text="("/>
                                                        <TextBlock Text="{Binding Path=ItemCount}" Margin="0,0,3,0"/>
                                                        <TextBlock Text="Trainees)"/>
                                                    </StackPanel>
                                                </StackPanel>
                                            </Expander.Header>
                                            <ItemsPresenter/>
                                        </Expander>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </GroupStyle.ContainerStyle>
                </GroupStyle>
            </DataGrid.GroupStyle>

            <DataGrid.ContextMenu>
                <ContextMenu>
                    <MenuItem x:Name="WorkTimeCmi" Header="Show Work Time" Click="WorkTimeCmi_Click">
                        <MenuItem.Icon>
                            <materialDesign:PackIcon Kind="Show"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <Separator/>
                    <MenuItem x:Name="AddCmi" Header="Add a New Tester" Click="AddCmi_Clicked">
                        <MenuItem.Icon>
                            <materialDesign:PackIcon Kind="Plus"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem x:Name="EditCmi" Header="Edit" Click="EditCmi_Clicked">
                        <MenuItem.Icon>
                            <materialDesign:PackIcon Kind="Edit"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem x:Name="RemoveCmi" Header="Remove" Click="RemoveCmi_Clicked">
                        <MenuItem.Icon>
                            <materialDesign:PackIcon Kind="Trash"/>
                        </MenuItem.Icon>
                    </MenuItem>
                </ContextMenu>
            </DataGrid.ContextMenu>

            <DataGrid.Columns>
                <DataGridTextColumn x:Name="idColumn" Width="SizeToCells" Header="Id" Binding="{Binding Id}"/>
                <DataGridTextColumn x:Name="firstNameColumn" Width="SizeToHeader" Header="First Name" Binding="{Binding FirstName}"/>
                <DataGridTextColumn x:Name="lastNameColumn" Width="SizeToHeader" Header="Last Name" Binding="{Binding LastName}"/>
                <DataGridTextColumn x:Name="genderColumn" Width="SizeToHeader" Header="Gender" Binding="{Binding Gender}"/>
                <DataGridTextColumn x:Name="dateOfBirthColumn" Width="SizeToHeader" Header="Date Of Birth" Binding="{Binding DateOfBirthStringFormat}"  IsReadOnly="True"/>
                <DataGridTextColumn x:Name="ageColumn" Width="SizeToHeader" Header="Age" Binding="{Binding Age}"/>
                <DataGridTextColumn x:Name="addressColumn" Width="SizeToCells" Header="Address" Binding="{Binding AddressStringFormat}"/>
                <DataGridTextColumn x:Name="phoneNumberColumn" Width="SizeToHeader" Header="Phone Number" Binding="{Binding PhoneNumber}"/>
                <DataGridTextColumn x:Name="emailAddressColumn" Width="SizeToCells" Header="Email Address" Binding="{Binding EmailAddress}"/>
                <DataGridTextColumn x:Name="carTypeColumn" Width="SizeToHeader" Header="Car Type" Binding="{Binding CarType}"/>
                <DataGridTextColumn x:Name="maximalDistanceColumn" Width="SizeToHeader" Header="Max. Dist." Binding="{Binding MaximalDistance}"/>
                <DataGridTextColumn x:Name="weeklyTestsCountColumn" Width="SizeToHeader" Header="Weekly Tests" Binding="{Binding WeeklyTestsCount}"/>
                <DataGridTextColumn x:Name="maximalWeeklyTestsColumn" Width="SizeToHeader" Header="Max. Weekly Tests" Binding="{Binding MaximalWeeklyTests}"/>
                <DataGridTextColumn x:Name="yearsOfExperienceColumn" Width="SizeToHeader" Header="Exp. (Years)" Binding="{Binding YearsOfExperience}"/>
            </DataGrid.Columns>
        </DataGrid>
...