|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Доброго времени суток! Мне нужно переопределить стандартный DataGrid таким образом, чтобы можно было объединять ячейки (визуально). По аналогии с WF, я сделал класс-наследник от DataGrid и переопределил метод OnRender в надежде получить желаемый результат. Но, во-первых, дело оказалось муторным, а во-вторых результата я не добился. Контрол оставался пустым. Подскажите, пожалуйста, каким образом можно решить мою задачу? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2020, 08:37 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
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 отличный от обычного текста? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2020, 11:59 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
думаю речь о Merge ячеек, учитывая ваш уровень, я бы сказал, что в DataGrid это не поддерживается. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 00:17 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Roman Mejtesдумаю речь о Merge ячеек Да, речь именно об этом ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 00:35 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Roman Mejtesя бы сказал, что в DataGrid это не поддерживается То что в стандартной поставке не поддерживается, это я знаю. Поэтому и появилась необходимость модификации ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 00:37 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Roman Mejtes думаю речь о Merge ячеек, учитывая ваш уровень, я бы сказал, что в DataGrid это не поддерживается. Смотря какой merge. Если по горизонтали и во всей колонке целиком - как выше в примере felix_ff - то это легко делается с помощью MultiBinding, DataGridTemplateColumn, итд итп. Если как-то иначе (как - ТС так и не пояснил), то для дальнейших ответов пока что маловато вводной информации. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 05:25 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныСмотря какой merge. Фактически, мне, в этом плане, нужно повторить функционал экселя. Т.е. объединение любого количества строк и столбцов в произвольном месте. Т.е. например, A[1]-C[3], D[5]-E[7]. Соответственно, количество объединений на 1 листе может быть любым ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 16:53 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Тогда датагрид не поможет. Либо брать какой-то готовый компонент (99% он будет платным), либо написать свой, но не на базе датагрида ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 16:55 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
В принципе, достаточно легко написать свою панель, реализующую такое объединение.... только при условии, что не требуется виртуализация ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 16:58 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Shocker.Pro, спасибо за ответ! Была мысль написать свой контрол, но я подумал, что использовать DataGrid будет менее трудоемким. Все дело в том, что на WF такое реализовано на базе DataGridView. Вот я и подумал, что это прокатит и с DataGrid ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 21:15 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Shocker.Pro, сам по себе механизм объединения ячеек накладывает определенные ограничения на модель представления. В DataGrid по строкам у нас иду элементы представления коллекции, а по столбцам их свойства. Что произойдет, если я объединю по горизонтали со значением, а если по строкам, какую запись нашел коллекции выбрать? Порядок записей при этом не детерминирован, то есть может зависит от сортировки и положения столбцов в таблице. То есть представление должно быть табличным, где порядок столбцов и строк фиксирован по индексу и постоянен. То есть такому контролу надо либо делать отдельное View, либо брать представление для DataTable (как вариант, такое не практиковал). По сути такой элемент управления называется SpreadSheet, его платных реализаций полным полно. Можно сделать представление коллекции, которое будет работать как SpreadShit возвращая ячейки, панель для размещения видимых ячеек и ItemsControl, настроить навигацию управления и т.д.; было бы интересно сделать такой :( ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 23:03 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Ну тут все просто, как в экселе - данные объединенной ячейки находятся по адресу левого верхнего угла. Roman Mejtes работать как SpreadShit Roman Mejtes было бы интересно сделать такой ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2020, 00:33 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Shocker.ProНу тут все просто, как в экселе - данные объединенной ячейки находятся по адресу левого верхнего угла. Да, именно так. Причем все остальные ячейки в объединении должны быть пустыми. Например, Excel не позволит объединить 2 ячейки с содержимым. Это как раз к вопросу: Roman Mejtes Что произойдет, если я объединю по горизонтали со значением, а если по строкам, какую запись нашел коллекции выбрать? Т.е. выбирать ничего не нужно. Значение берется из верхней левой ячейки объединения. Shocker.ProТЗ "сделать как в экселе" слишком растяжимое Фактически, задача звучит примерно так: нужно визуально объединить определенный диапазон ячеек (именно визуально. с логической структурой таблицы ничего делать не нужно. все будет оставаться как есть. Собственно, поэтому и появилась мысль о переопределении метода OnRender), взяв значение из верхней левой и расположить в определенном месте (имеется в виду Alightment - left, right и т.д.). Собственно, это все, что нужно))) В остальном функциональность стандартного DataGrid меня полностью устраивает ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2020, 15:20 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
asn-ccode Фактически, задача звучит примерно так: нужно визуально объединить определенный диапазон ячеек (именно визуально. с логической структурой таблицы ничего делать не нужно. все будет оставаться как есть. Собственно, поэтому и появилась мысль о переопределении метода OnRender), взяв значение из верхней левой и расположить в определенном месте (имеется в виду Alightment - left, right и т.д.). Собственно, это все, что нужно))) В остальном функциональность стандартного DataGrid меня полностью устраивает Потому что если говорить про рендер - тут сразу начинается очень много вопросов. А где должна находиться кнопка раскрытия выпадающего списка при редактирования, когда у тебя объединены 100 ячеек по горизонтали. А как будет работать виртуализация, если ты объединишь 65535 по вертикали и т.п... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2020, 16:18 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
Если есть деньги и возможность не изобретать велосипед, то вот (навскидку): https://docs.devexpress.com/WPF/16118/controls-and-libraries/spreadsheet У конкурентов наверняка есть аналоги. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2020, 21:42 |
|
WPF Custom DataGrid
|
|||
---|---|---|---|
#18+
asn-ccode мысль о переопределении метода OnRender Но опять же, там скорее всего две панели VirtualizedStackPanel, одна лежит под всем списком, другая под строкой. В случае объединения ячеек по вертикали, для строки придется выйти за пределы панели строки. Это, в принципе, можно (рендерить за пределами панели), но опять же, пока позволяет виртуализация. При объединении количества строк больше, чем параметр для виртуализации, начнутся проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2020, 22:04 |
|
|
Start [/forum/topic.php?fid=21&fpage=1&tid=1440258]: |
0ms |
get settings: |
16ms |
get forum list: |
9ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
66ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
339ms |
get tp. blocked users: |
1ms |
others: | 6ms |
total: | 447ms |
0 / 0 |