2013-03-13 3 views
2

Мне нужна какая-то временная шкала в «datagrid», и у персонажа есть довольно много строк.Быстрый легкий метод рисования в DataGrid

https://www.dropbox.com/s/idz0zuk8u3jla11/img.PNG?m

Левая сторона моего DataGrid работает очень хорошо, потому что есть только текст.

Правая сторона немного лаги.

На самом деле, у меня есть DataGridTemplateColumn в первом индексе части временной шкалы.

My DataGridTemplateColumn использует мой UserControl как DataTemplate, где я нарисовал свои линии/прямоугольники для всей строки. Это работает, потому что я устанавливаю левый край объектов в качестве примера 500, поэтому он появляется над другими столбцами с правой стороны ...

Usercontrol - это простая сетка, в которой я поместил свои прямоугольники динамически.

Другие столбцы также являются DataGridTemplateColumn, но они пусты.

Теперь, моя идея состоит в том, чтобы создать только один столбец, где я могу разместить большой пользовательский контроль и рисовать временную шкалу для строки.

Какова наилучшая практика?

благодаря

+0

Здравствуйте, извините за вопрос не по теме, но как вы нарисовали все это на DataGrid? Создаете ли вы холст поверх него или используете OnRender() или что-то еще? – szx

ответ

1

Я видел, что вы хотите сделать линию времени, что является большим. Я думаю, что, возможно, Grid - не лучшая панель для этого. Я думаю, что для этого случая вы должны реализовать свою собственную панель. Создание пользовательской панели отлично, потому что вы можете установить, как будут отображаться элементы, а также вы можете добавить анимацию или поведение перетаскивания. Вы можете увидеть эти страницы:

Также я прикрепил некоторые ссылки на панели, которые я нашел, взгляните, может быть, вы найдете полезные вещи.

EDIT


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

+0

ОК спасибо за ваш ответ. Но я останусь на datagrid, потому что мне не нужно обрабатывать синхронизацию прокрутки.трудно реализовать с двумя элементами управления, потому что строки имеют разную высоту. Теперь я изменил код, поэтому я рисую каждую строку самостоятельно в надстройке OnRender. В datagrid содержится один столбец для части временной шкалы. работает очень хорошо. Еще раз спасибо Вот мой результат: http://s1.directupload.net/images/130315/i5edursc.png –

+1

Хотя, возможно, прекрасный ответ на момент написания, первые две ссылки не более работы , Подумайте об обновлении. – MickyD

+0

спасибо @Roy, уже разобрался! –