Что бы вы предложили для создания такого элемента управления в WPF? - PullRequest
9 голосов
/ 14 февраля 2010

Мне нужно создать элемент управления WPF, который выглядит примерно так: альтернативный текст http://img251.imageshack.us/img251/6857/circle.png

Где каждый цвет должен быть кликабельным и изменять размер (или выбирать).

Этот элемент управления будет использоваться для установки режимов в часы дня. Я думал о создании 24 кнопок, которые будут расположены по кругу:

альтернативный текст http://img684.imageshack.us/img684/2184/buttonsk.png

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

Любые другие / лучшие идеи о том, как построить это? (прошу прощения за мой плохой рисунок).

Ответы [ 2 ]

4 голосов
/ 14 февраля 2010

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

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

2 голосов
/ 15 февраля 2010

Звучит так, как будто вы хотите настроить ListBox (несколько элементов, которые можно выбрать / щелкнуть). Для макета вы хотели бы использовать некоторый тип RadialPanel в качестве ItemsPanel. Вам, вероятно, также нужно изменить ItemContainerStyle, чтобы ваши ListBoxItems выглядели так, как показано выше, возможно, с некоторыми триггерами для изменения цветов в зависимости от состояния выбора. В зависимости от того, какое поведение вам нужно от ваших элементов, вам может понадобиться создать пользовательские элементы управления, производные от ListBox / ListBoxItem, но во многих случаях встроенное поведение поможет вам в этом. Чтобы повторно использовать его как единое целое, вы можете обернуть ListBox с его 24-часовыми элементами и настроенными шаблонами в UserControl и представить данные выбора в любой нужной форме как свойство зависимости (например, IEnumerable элементов данных, представляющих выбранные часы ).

Помогает ли это вам начать?

...