powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Total row (footer) для стандартного WPF DataGrid
9 сообщений из 9, страница 1 из 1
Total row (footer) для стандартного WPF DataGrid
    #39678666
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто оставлю это здесь, может кому пригодится.
Промучившись с размышлениями и пробами, погуглив различные сильно замороченные варианты решения задачи создания строки для DataGrid, которая была бы всегда внизу, нашел на мой взгляд простое и изящное решение. Комментариии излишни

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
	public class ListCollectionViewWithFooterElement : ListCollectionView
	{
		public object LastElement { get; set; }

		public ListCollectionViewWithFooterElement(IList list, object lastElement) : base(list)
		{
			LastElement = lastElement;
		}

		public override int Count => base.Count + 1;

		public override object GetItemAt(int index)
		{
			return index == base.Count ? LastElement : base.GetItemAt(index);
		}
	}



Критика приветствуется.
Теоретически, нужно было бы еще переопределить GetEnumerator на свой, который делает то же самое (и я поначалу попытался это запилить), но выяснилось, что ItemsControl не дергает IEnumerable, когда есть ICollection.
...
Рейтинг: 0 / 0
Total row (footer) для стандартного WPF DataGrid
    #39678667
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. А как эта штука ведет себя, когда пользователь выполняет сортировку (кликом по хидеру колонки)?
2. И как эта штука будет вести себя при группировке данных?
...
Рейтинг: 0 / 0
Total row (footer) для стандартного WPF DataGrid
    #39678668
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Как надо работает, как раз из-за пользовательской сортировки это все и пришлось мутить.
2. Не пробовал, полагаю, аналогично. Это ведь работает после всех сортировок и группировок.
...
Рейтинг: 0 / 0
Total row (footer) для стандартного WPF DataGrid
    #39678669
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, 3: по-моему, этой последней итоговой строке будет проблематично назначить свой собственный стиль отображения - она же будет в общем ItemsControl. Придется вводить для нее какой-то дополнительный отличительный признак, и использовать ItemContainerStyleSelector.
И 4: Эта итоговая строка будет уходить вниз при скроллинге (т.к. она будет в общем ItemsControl). Как её сделать всегда видимой?
...
Рейтинг: 0 / 0
Total row (footer) для стандартного WPF DataGrid
    #39678671
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3. Ну я просто в модель добавил bool IsTotalRow и на него повесил нужную обработку в представления. И вообще, это же уровень модели строки, а не уровень коллекции. То бишь, решается как обычно.

4. У меня такой задачи не было. Думаю, что на базе штатного DataGrida это проблему фиг решишь. Если только пытаться делать два DataGrid-а и синхронизировать ширину их столбцов, но это совсем другая история.
...
Рейтинг: 0 / 0
Total row (footer) для стандартного WPF DataGrid
    #39678676
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По идее, тут есть такой еще недостаток - не будет событий изменения коллекции при изменении свойства LastElement, ну это можно добавить.
...
Рейтинг: 0 / 0
Total row (footer) для стандартного WPF DataGrid
    #39678677
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, спасибо за идею, может, где-то пригодится.
Shocker.ProДумаю, что на базе штатного DataGrida это проблему фиг решишь. Если только пытаться делать два DataGrid-а и синхронизировать ширину их столбцов, но это совсем другая история.
Ну да, я в свое время так и сделал - нагуглил вот это , и доработал напильником, т.к. очень не хотеолсь связываться с девэкспрессовким гридом (очень он уж тяжелый), а требовалось сделать именно закрепленный footer с итогами (которые, разумеется, меняли бы размеры при изменении размеров колонок, скрывались при скрытии колонок, итд).
...
Рейтинг: 0 / 0
Total row (footer) для стандартного WPF DataGrid
    #39679232
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё правильно сделано. :)
Так же реализован NewItemPlaceholder по сути своей :)
...
Рейтинг: 0 / 0
Total row (footer) для стандартного WPF DataGrid
    #39679236
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и еще один недостаток - итоговая строка будет ниже плейсхолдера, если разрешить добавление. ))
А может это и не недостаток, а так и логичнее.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Total row (footer) для стандартного WPF DataGrid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]