Newb: WPF пользовательский графический элемент управления - с чего начать - PullRequest
1 голос
/ 18 октября 2010

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

В любом случае, я новичок в WPF и хочу создать собственный элемент управления, которыйбыть своего рода графическим контролем.Рисунок всегда будет состоять из круга, содержащего матрицу из нескольких квадратов (на самом деле от нескольких сотен до нескольких тысяч). Квадраты должны реагировать на щелчки мыши и на события мыши (и в идеале можно перемещаться / выбирать с помощью клавиатуры.)Квадрат будет представлять объект, который я закодировал.

В прошлом я использовал элемент управления сеткой для отображения цветных квадратов (с VCL в CBuilder), но я хотел бы сделать графическую версию.(На самом деле, я хотел бы задать еще один вопрос: есть ли элемент управления сеткой WPF, в котором я могу установить цвета отдельных ячеек?)

Вопрос в том, с чего начать?Должен ли я начать с холста и рисовать на нем?Я получаю из существующего объекта?Мне просто немного не хватает идей по реализации, поэтому любые советы и рекомендации, которые вы можете предложить, будут в значительной степени приняты.

BBz

1 Ответ

1 голос
/ 19 октября 2010

Прежде всего, я бы посоветовал получить приличную ручку для WPF и узнать, как она подходит к решению проблемы. Он сильно отличается от предыдущих технологий .NET Desktop, таких как WinForms. Как только у вас появится хорошее представление об отделении логики от пользовательского интерфейса и о том, как WPF подходит к проблеме, вы можете погрузиться и начать принимать правильные решения в зависимости от того, с чем сталкиваетесь.

Упомянутая вами проблема может быть решена несколькими способами. Что касается вашего вопроса об использовании Grid, это может быть сделано, так как это тип макета. Это значительно превосходит Canvas с точки зрения организации вашей визуальной структуры. Определенные строки / столбцы представляют собой не более чем контейнеры, которые могут содержать различные объекты пользовательского интерфейса. Поэтому нажатие Rectangle на Grid и раскраска по желанию даст вам эффект, который вы ищете. Этот Rectangle может затем стать пользовательским элементом управления, который позволит вам определять различные свойства, а также специальные триггеры для наведения мыши и т. Д. ...

На более высоком уровне вы захотите инкапсулировать эту логику как UserControl, которая также будет содержать ваш пользовательский элемент управления. Возможно, UserControl содержит Grid, который будет использовать ваш пользовательский элемент управления.

Надеюсь, это даст вам некоторые идеи о том, как начать работу, однако более глубокое понимание WPF поможет вам в достижении вашей цели.

...