powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF Custom DataGrid
16 сообщений из 16, страница 1 из 1
WPF Custom DataGrid
    #40019798
asn-ccode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Мне нужно переопределить стандартный DataGrid таким образом, чтобы можно было объединять ячейки (визуально). По аналогии с WF, я сделал класс-наследник от DataGrid и переопределил метод OnRender в надежде получить желаемый результат. Но, во-первых, дело оказалось муторным, а во-вторых результата я не добился. Контрол оставался пустым. Подскажите, пожалуйста, каким образом можно решить мою задачу?
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40019864
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asn-ccode,

что вы понимаете под объединять?

датаимясумма2020-11-01Николай200.002020-11-02Андрей300.002020-11-08NULL500.00

и что должно получиться?

дата+имясумма2020-11-01 Николай200.002020-11-02 Андрей300.002020-11-08500.00

а если в гриде у итемов Content отличный от обычного текста?
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020168
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю речь о Merge ячеек, учитывая ваш уровень, я бы сказал, что в DataGrid это не поддерживается.
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020172
asn-ccode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesдумаю речь о Merge ячеек
Да, речь именно об этом
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020174
asn-ccode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesя бы сказал, что в DataGrid это не поддерживается
То что в стандартной поставке не поддерживается, это я знаю. Поэтому и появилась необходимость модификации
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020195
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
думаю речь о Merge ячеек, учитывая ваш уровень, я бы сказал, что в DataGrid это не поддерживается.

Смотря какой merge. Если по горизонтали и во всей колонке целиком - как выше в примере felix_ff - то это легко делается с помощью MultiBinding, DataGridTemplateColumn, итд итп. Если как-то иначе (как - ТС так и не пояснил), то для дальнейших ответов пока что маловато вводной информации.
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020483
asn-ccode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныСмотря какой merge.
Фактически, мне, в этом плане, нужно повторить функционал экселя. Т.е. объединение любого количества строк и столбцов в произвольном месте. Т.е. например, A[1]-C[3], D[5]-E[7]. Соответственно, количество объединений на 1 листе может быть любым
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020485
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда датагрид не поможет.
Либо брать какой-то готовый компонент (99% он будет платным), либо написать свой, но не на базе датагрида
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020488
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, достаточно легко написать свою панель, реализующую такое объединение.... только при условии, что не требуется виртуализация
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020606
asn-ccode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, спасибо за ответ! Была мысль написать свой контрол, но я подумал, что использовать DataGrid будет менее трудоемким. Все дело в том, что на WF такое реализовано на базе DataGridView. Вот я и подумал, что это прокатит и с DataGrid
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020639
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
сам по себе механизм объединения ячеек накладывает определенные ограничения на модель представления. В DataGrid по строкам у нас иду элементы представления коллекции, а по столбцам их свойства. Что произойдет, если я объединю по горизонтали со значением, а если по строкам, какую запись нашел коллекции выбрать? Порядок записей при этом не детерминирован, то есть может зависит от сортировки и положения столбцов в таблице.
То есть представление должно быть табличным, где порядок столбцов и строк фиксирован по индексу и постоянен. То есть такому контролу надо либо делать отдельное View, либо брать представление для DataTable (как вариант, такое не практиковал). По сути такой элемент управления называется SpreadSheet, его платных реализаций полным полно.
Можно сделать представление коллекции, которое будет работать как SpreadShit возвращая ячейки, панель для размещения видимых ячеек и ItemsControl, настроить навигацию управления и т.д.; было бы интересно сделать такой :(
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020646
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тут все просто, как в экселе - данные объединенной ячейки находятся по адресу левого верхнего угла.

Roman Mejtes
работать как SpreadShit
лучше, чтобы ничего не работало как Shit


Roman Mejtes
было бы интересно сделать такой
Ну всё зависит от требований. ТЗ "сделать как в экселе" слишком растяжимое ))
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020802
asn-ccode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProНу тут все просто, как в экселе - данные объединенной ячейки находятся по адресу левого верхнего угла.
Да, именно так. Причем все остальные ячейки в объединении должны быть пустыми. Например, Excel не позволит объединить 2 ячейки с содержимым. Это как раз к вопросу:
Roman Mejtes Что произойдет, если я объединю по горизонтали со значением, а если по строкам, какую запись нашел коллекции выбрать?
Т.е. выбирать ничего не нужно. Значение берется из верхней левой ячейки объединения.
Shocker.ProТЗ "сделать как в экселе" слишком растяжимое
Фактически, задача звучит примерно так: нужно визуально объединить определенный диапазон ячеек (именно визуально. с логической структурой таблицы ничего делать не нужно. все будет оставаться как есть. Собственно, поэтому и появилась мысль о переопределении метода OnRender), взяв значение из верхней левой и расположить в определенном месте (имеется в виду Alightment - left, right и т.д.). Собственно, это все, что нужно))) В остальном функциональность стандартного DataGrid меня полностью устраивает
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020834
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asn-ccode
Фактически, задача звучит примерно так: нужно визуально объединить определенный диапазон ячеек (именно визуально. с логической структурой таблицы ничего делать не нужно. все будет оставаться как есть. Собственно, поэтому и появилась мысль о переопределении метода OnRender), взяв значение из верхней левой и расположить в определенном месте (имеется в виду Alightment - left, right и т.д.). Собственно, это все, что нужно))) В остальном функциональность стандартного DataGrid меня полностью устраивает
Ну так эта задача отталкивается от функциональности DataGrid-a, а у него тоже функциональность большая. Я-то говорит о том, какая задача в чистом виде, какие требования. Они наверняка меньше, чем функциональность датагрида, а, следовательно, можно от этого отталкиваться при создании собственного контрола.

Потому что если говорить про рендер - тут сразу начинается очень много вопросов. А где должна находиться кнопка раскрытия выпадающего списка при редактирования, когда у тебя объединены 100 ячеек по горизонтали. А как будет работать виртуализация, если ты объединишь 65535 по вертикали и т.п...
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020912
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть деньги и возможность не изобретать велосипед, то вот (навскидку): https://docs.devexpress.com/WPF/16118/controls-and-libraries/spreadsheet
У конкурентов наверняка есть аналоги.
...
Рейтинг: 0 / 0
WPF Custom DataGrid
    #40020914
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asn-ccode
мысль о переопределении метода OnRender
Кстати, в этом случае OnRender-то переопределять как раз вряд ли нужно. По идее, нужно переопределять просто Panel.
Но опять же, там скорее всего две панели VirtualizedStackPanel, одна лежит под всем списком, другая под строкой. В случае объединения ячеек по вертикали, для строки придется выйти за пределы панели строки. Это, в принципе, можно (рендерить за пределами панели), но опять же, пока позволяет виртуализация. При объединении количества строк больше, чем параметр для виртуализации, начнутся проблемы.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF Custom DataGrid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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