2010-02-14 10 views
9

muszę zbudować kontroli WPF, który wygląda jakoś podobny do tego: alt text http://img251.imageshack.us/img251/6857/circle.pngCo zasugerowałbyś do zbudowania takiej kontroli w WPF?

Gdzie każdy kolor powinien być klikalny i zmiennym rozmiarze (lub do wyboru).

Ta kontrolka służy do ustawiania trybów na godziny dnia. myślałem o zrobieniu 24 przycisków, które będą rozmieszczone w okręgu:

alt text http://img684.imageshack.us/img684/2184/buttonsk.png

Innym pomysłem było wyciągnąć pełne koło i obliczyć pozycję Mysz kliknięciu przez użytkownika za dobór i wyciągnąć kilka okręgów do reprezentowania dane.

Jakieś inne/lepsze pomysły, jak to zbudować? (proszę wybaczyć mój biedny rysunek).

+0

"resizable" - przez użytkowników w czasie wykonywania lub po prostu w kodzie? – Schneider

+0

Wybierać jak? masz na myśli tabulację lub kliknięcie? Jeśli klikniesz, chcesz zachować to samo zachowanie przycisku/kliknięcia? – Schneider

+0

Zmiana rozmiaru i możliwość wyboru - mam na myśli umożliwienie użytkownikowi oznaczania godzin dnia różnymi kolorami. –

Odpowiedz

2

Wygląda na to, że chcesz dostosować ListBox (wiele elementów do wybrania/kliknięcia). Dla układu chciałbyś użyć jakiegoś typu RadialPanel jako ItemsPanel. Prawdopodobnie musisz również zmienić ItemContainerStyle, aby Twoje elementy ListBoxItem wyglądały tak, jak powyżej, prawdopodobnie z niektórymi wyzwalaczami do zmiany kolorów w oparciu o stan zaznaczenia. W zależności od tego, jakie zachowanie jest potrzebne, możesz potrzebować niestandardowych niestandardowych formantów opartych na ListBox/ListBoxItem, ale w wielu przypadkach wbudowane zachowanie zapewni ci długą drogę. Aby ponownie użyć go jako pojedynczej jednostki, można zawinąć ListBox z jego 24-godzinnymi pozycjami i niestandardowymi szablonami w UserControl i ujawnić dane wyboru w dowolnej formie, jaką potrzebujesz jako Właściwość Dependency (jak IEnumerable z pozycji danych reprezentujących wybrane godziny).

Czy to pomoże Ci zacząć?

4

Myślę, że otrzymasz dziwne efekty krawędziowe z wieloma nakładającymi się lub dotykającymi elementami sterującymi. Więc zrobię to, aby to zrobić. Konwertuje pozycję myszy na przycisku w dół na plaster, a następnie wykona odpowiednią akcję.

Za pomocą jednego elementu sterującego można również wymyślić racjonalny sposób radzenia sobie z wprowadzaniem danych z klawiatury i pokazywaniem zaznaczenia i dopuszczaniem zachowania wielokrotnego wyboru.

Powiązane problemy