Написание WPF Grid - PullRequest
       10

Написание WPF Grid

1 голос
/ 19 апреля 2009

Мне нужно написать WPF-подобный элемент управления сеткой. Я новичок в WPF и не могу понять, с чего начать.

Должно ли оно быть производным от UserControl, FrameworkElement или чего-то еще?

Мне нужно иметь горизонтальные и вертикальные полосы прокрутки и область содержимого. Означает ли это, что у моего элемента управления сеткой должна быть DockPanel с полосами прокрутки, а затем другой элемент управления для области содержимого, чтобы мой GridUserControl имел DockPanel с 2 закрепленными полосами прокрутки и элементом управления GridContentFrameworkElement?

Покупка сетки не вариант.


Это то, что я решил: у меня есть GridUserControl (производный от UserControl). Он имеет DockPanel с 2 закрепленными объектами ScrollBar. Основная область содержимого (GridContent) - это еще один элемент управления, производный от Panel. Контент рисуется в GridContent.OnRender.

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

Ответы [ 3 ]

2 голосов
/ 19 апреля 2009

Вы уверены, что должны написать? Есть много хороших сеток там; даже бесплатные . Я знаю, что это не отвечает, но просто пытается помочь.

1 голос
/ 20 апреля 2009

Free

Во-первых, WPF поставляется с GridView , который представляет собой простую сетку. Если он не соответствует вашим потребностям, вы можете расширить его, чтобы унаследовать некоторые существующие функции.

Также бесплатно

Большинство людей считают, что это слишком просто для их требований, поэтому проверьте, что Microsoft free WPFToolkit содержит элемент управления DataGrid, который может удовлетворить ваши потребности. Вот краткий обзор 1018 *.

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

Удачи!

0 голосов
/ 19 апреля 2009

Вероятно, он должен быть производным от UserControl или ItemsControl (или чего-то еще в иерархии ItemsControl, например, Selector). Если вы новичок в WPF, то, вероятно, лучше всего извлечь его из UserControl, поскольку для создания хорошего пользовательского элемента управления требуется разумное владение идиомами разработки WPF, а также только API.

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

Обратите внимание, что если вы ищете функциональность типа сетки данных, то существуют различные бесплатные, коммерческие и открытые таблицы данных WPF с открытым исходным кодом, хотя они, как правило, смещены в сторону редактирования табличных данных, а не, скажем, в Excel-подобную функциональность .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...