Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1

Заголовок внутри каждой группы

17.04.2025, 14:59. Показов 2935. Ответов 26

Студворк — интернет-сервис помощи студентам
Добрый день.

Как внутри каждой группы поместить заголовок?
Суть в чём - есть DataGrid, к которому биндится CollectionViewSource и затем настраивается группировка данных. При этом я хочу отключить заголовок у самой DataGrid и отображать его внутри каждой группы.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
                <DataGrid x:Name="PersonGrid"
                      Grid.Row="0"
                      ItemsSource="{Binding Source={StaticResource groupingPersons}}"
                      SelectedItem="{Binding SelectedPerson}"
                      IsReadOnly="True"
                      AutoGenerateColumns="False"                          
                      HeadersVisibility="None">
 
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Гр.№" Binding="{Binding GroupNumber, Mode=OneWay}" Width="Auto"/>
                    <DataGridTextColumn Header="ФИО" Binding="{Binding Converter={StaticResource PersonConverter}}" Width="Auto"/>
                </DataGrid.Columns>
 
                <DataGrid.GroupStyle>
                    <GroupStyle>
                        <GroupStyle.ContainerStyle>
                            <Style TargetType="{x:Type GroupItem}">
                                <Setter Property="Margin" Value="5,0,5,5"/>
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="{x:Type GroupItem}">
                                            <Expander IsExpanded="True" 
                                                      BorderThickness="5,5,5,5">
                                                <Expander.Header>
                                                    <DockPanel>
                                                        <TextBlock Text="{Binding Path=Name}"
                                                                   FontWeight="Bold" 
                                                                   Margin="5,0,0,0"/>
                                                    </DockPanel>
                                                </Expander.Header>
                                                <ItemsPresenter/>
                                            </Expander>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </GroupStyle.ContainerStyle>
                    </GroupStyle>
                </DataGrid.GroupStyle>
            </DataGrid>
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.04.2025, 14:59
Ответы с готовыми решениями:

Студент определяет свой номер N в списке группы. Старосте группы сообщается идентификатор M группы
:cry::cry::cry: Решить задание нужно до 25.11.2018. SOS!!!!!

Вычислить среднюю успеваемость группы по каждой из дисциплин и в целом успешность группы.
Help!!! 3. В двумерном массиве хранится информация об оценках каждого с 20 студентов группы по...

Разработать приложение «Альбом группы», в котором список группы отображается через элемент DataGridView
Разработать приложение «Альбом группы», в котором список группы отображается с помощью элемента...

26
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
24.04.2025, 00:53
Студворк — интернет-сервис помощи студентам
Элд Хасп, ой, не заметил... Точно дублируется.
И это прям на learn.microsoft лежало?? Вот я тоже слепой..
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
24.04.2025, 11:22
Цитата Сообщение от wizard41 Посмотреть сообщение
И это прям на learn.microsoft лежало?? Вот я тоже слепой..
Не лежало.
Я взял его за основу, чтобы не колдовать с созданием исходной группировки.
На это ушло бы больше времени и сил чем на на сам ответ по этой теме.
И добавил в него отражение заголовков колонок.

Строки XAML, которые обведены, это инжекция моего кода в пример:
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вот фрагмент XAML создающий отражение DataGridColumnHeadersPresenter в каждой группе.
Добавлено через 23 минуты
Uswer, на всякий случай предупреждаю.
Моё решение зависит от шаблона DataGrid.
Подходит к тому, который в данное время у меня на компе с Wind10.
Шаблоны по умолчанию для WPF устанавливаются темами Windows.
Поэтому нет гарантий, что такое решение будет работать "всегда и везде".

Для более общего решения, независящего от реализации шаблона, потребуется "вытащить" PART_ColumnHeadersPresenter сначала на уровень DataGrid и уже потом его использовать для получения отражения в группе.
Чтобы это сделать нужно создать не менее 2-х (скорее всего 3 или 4) Attached Property с логикой по обнаружению PART_ColumnHeadersPresenter, определению его положения и транслирования этого всего в группу.

Другой подход - это явная установка шаблона DataGrid, чтобы изменение темы не могло непредсказуемо повлиять на шаблон.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
24.04.2025, 11:22
Добавлено через 3 часа 11 минут
Uswer, просьба на будущее.
Когда задаёте вопросы, особенно сложные, давайте какой-то пример кода для воспроизведение.
Пример должен быть полным, чтобы просто скачать его и запустить в Студии. В крайнем случае, чтобы можно было за 1-2 копипаста вставить в Студию.
Иначе на создание исходного кода может уйти времени гораздо больше чем на поиск ответа.

В данном случае, на создание отражения заголовков в группировке у меня ушло минут 10-15. Но если бы мне не попался код примера на learn, я бы даже не приступил к решению.
Выложи вы такой пример сразу в вопросе, то уже давно получили бы ответ.
1
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1
25.04.2025, 10:49  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Когда задаёте вопросы, особенно сложные, давайте какой-то пример кода для воспроизведение.
ОК.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Но если бы мне не попался код примера на learn
Кстати, именно оттуда я и взял стиль групп. И что-то не подумал, что тяжело разобраться. В целом цель достигнута, спасибо.

Добавлено через 45 секунд
Цитата Сообщение от Элд Хасп Посмотреть сообщение
особенно сложные
А это был сложный вопрос?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
25.04.2025, 12:54
Цитата Сообщение от Uswer Посмотреть сообщение
А это был сложный вопрос?
Не типичный.
С таким не сталкиваешься каждый день. И ответить без теста в Студии вряд ли на него кто-то сможет.

А по реализации - не сложный.
Нужно было только запустить в дебагере и посмотреть визуальное дерево GroupItem. Там стало понятно как нужно было "пропутешествовать" по нему, чтобы добраться до представления заголовков.
Дело 10-15 минут.
Не без запускаемого кода не ответишь.
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,758
Записей в блоге: 4
28.04.2025, 10:43
Uswer, Вот навороченный DataGrid, но только за денежку... Умееет оченно много - https://docs.devexpress.com/WP... /data-grid
0
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1
28.04.2025, 11:51  [ТС]
За денежку не мой вариант, но за участие в теме спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2025, 11:51

Вычислить средний балл группы и распечатать список студентов, имеющих средний балл выше среднего балла группы
Помогите, пожалуйста, решить задачу: вычислить средний балл группы и распечатать список студентов,...

Разделение картинки на группы и добавление на территорию этой группы точек
Имеется картинка плана здания больницы с помещениями, входы в помещения помечены. По api передается...

Составьте новый массив из чисел, взятых по одному из каждой группы равных членов данной последовательности
пусть даны целые числа а1,а2,..., аn, среди которых могут быть повторяющиеся. Составьте новый...

Из каждой группы чисел взять по первому числу
Здравствуйте, подскажите, есть группы числе в столбик, как можно из каждой группы взять по первому...

Составьте массив из чисел, взятых по одному из каждой группы равных членов данной последовательности
Решите пожалуйста: Пусть даны целые числа a1,a2,...,an , среди которых могут быть повторяющиеся....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru