2010-02-14 8 views
9

Ich brauche ein WPF-Steuerelement zu erstellen, die irgendwie ähnlich wie folgt aussieht: alt text http://img251.imageshack.us/img251/6857/circle.pngWas würden Sie vorschlagen, um ein solches Steuerelement in WPF zu erstellen?

Wo jede Farbe sollte klickbare und resizable (oder wählbar) sein.

Dieses Steuerelement wird verwendet, um Modi für die Stunden eines Tages einzustellen. Ich habe darüber nachgedacht, 24 Tasten machen, die in einem Kreis angeordnet werden würde:

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

Eine andere Idee war, einen vollständigen Kreis zu zeichnen und Benutzer per Mausklick die Position für die Auswahl berechnen und mehrere Kreise zeichnen die darstellen Daten.

Irgendwelche anderen/bessere Ideen, wie man das baut? (bitte entschuldigen Sie meine schlechte Zeichnung).

+0

"resizable" - von Benutzern zur Laufzeit oder nur im Code? – Schneider

+0

Wählbar wie? meinst du mit Tabbing oder Klick? Wenn Sie klicken möchten, wählen Sie das gleiche Verhalten wie eine Schaltfläche? – Schneider

+0

Änderbar und wählbar - ich möchte den Benutzer Stunden des Tages mit verschiedenen Farben markieren lassen. –

Antwort

2

Es klingt wie Sie eine benutzerdefinierte ListBox (mehrere Elemente, die auswählbar/anklickbar sind) möchten. Für das Layout möchten Sie eine Art von RadialPanel als ItemsPanel verwenden. Sie müssen wahrscheinlich auch den ItemContainerStyle ändern, damit Ihre ListBoxItems wie oben aussehen, wahrscheinlich mit einigen Triggern, um die Farben basierend auf dem Auswahlstatus zu ändern. Je nachdem, welches Verhalten Sie von Ihren Elementen benötigen, müssen Sie möglicherweise benutzerdefinierte von ListBox/ListBoxItem abgeleitete benutzerdefinierte Steuerelemente erstellen. In vielen Fällen wird Ihnen das integrierte Verhalten jedoch viel bringen. Um es als eine einzelne Einheit wiederzuverwenden, können Sie die ListBox mit ihren 24-Stunden-Elementen und benutzerdefinierten Vorlagen in einem UserControl einpacken und die Auswahldaten in der von Ihnen benötigten Form als Abhängigkeitseigenschaft bereitstellen (z. B. IEnumerable der Datenelemente für die ausgewählten Stunden)).

Hilft Ihnen das beim Einstieg?

4

Ich denke, Sie würden seltsame Kanteneffekte mit mehreren überlappenden oder berührenden Steuerelementen bekommen. Also würde ich ein einzelnes benutzerdefiniertes Steuerelement erstellen, um dies zu tun. Es würde die Mausposition auf der Schaltfläche in ein Segment konvertieren und dann die entsprechende Aktion ausführen.

Mit einem einzigen Steuerelement können Sie auch eine rationelle Methode zur Eingabe von Tastatureingaben und zum Anzeigen von Auswahlmöglichkeiten sowie zum Auswählen von Mehrfachauswahlverhalten verwenden.