Seiten

Montag, 14. März 2011

Half Square UserControl

Ich habe ein UserControl entwickelt, mit dem ein Halbquadrat erstellt werden kann. Den Download gibt es als .dll in der Expression Gallery. Einen Artikel über die Berechnungslogik für ein Halquadrat, erstellt aus einem RegularPolygon, findet Ihr hier.

Eigenschaften

Das "HalfSquareUserControl" wird grundlegend über fünf Eigenschaften konfiguriert:


Mithilfe der Eigenschaft "RightCornerOrientation" kann die Orientierung der durch den rechten Winkel definierten Ecke festgelegt werden. Dieser Eigenschaft können alternativ vier Werte zugewiesen werden: "TopLeft", "TopRight", "BottomRight" oder "BottomLeft".

Die Eigenschaft "SquareBrush" legt den Brush des Innenbereichs fest. Diese Eigenschaft entspricht der Eigenschaft "Fill" eines herkömmlichen RegularPolygon.

Die Eigenschaft "StrokeBrush" legt den Brush für den Stroke fest.

Über die Eigenschaft "SquareSize" werden die Seitenlängen des Quadrats festgelegt, in welches das Halbquadrat virtuell eingebettet ist. Das Setzen dieser Eigenschaft bewirkt, dass die Eigenschaften "Height" und "Width" jeweils die gleichen Werte haben.

Die Eigenschaft "StrokeThickness" bestimmt schließlich die Stärke des Stroke in Pixel.

Alle Eigenschaften sind als Abhängigkeitseigenschaften implementiert.


Verwendung

1. Herunterladen des Beispielprojekts in der Expression Gallery.

2. Dem eigenen Silverlight-Projekt wird eine Referenz zu der SilverLawHalfSquare.dll hinzugefügt. Die .dll findet man im /Bin/Release-Ordner des Beispielprojekts.

3. In der Registerkarte "Objekte" wird das "HalfSquareUserControl" ausgewählt ...


4. ... und mit einem Doppelklick der UI hinzugefügt. Die Eigenschaften des UserControls sind in die Kategorie "Layout" eingebettet:


5. Nach dem Hinzufügen des UserControls hat es zunächst eine Größe von 100px. Die Eigenschaften "Width" und "Height" sollten auf "Automatisch" gesetzt werden. Denn die Größe des UserControls wird einheitlich über die Eigenschaft "SquareSize" festgelegt. Eine Veränderung des Werts von "SquareSize" wirkt sich automatisch auf die Eigenschaften "Width" und "Height" aus. Das setzt aber voraus, dass diese beiden Eigenschaften auf "Automatisch" gesetzt wurden.

Eine Größenveränderung des UserControls sollte nur über die Eigenschaft "SquareSize" erfolgen, damit die quadratische Dimension immer beibehalten wird.

6. Optional können die Eigenschaften "StrokeThickness", "StrokeBrush", "SquareBrush" und "RightCornerOrientation" gesetzt werden.

Wichtiger Hinweis

Überwiegend wirkt sich jede Veränderung eines der Eigenschaftswerte bereits zur Entwurfszeit auf die visuelle Gestalt des UserControls aus. Hiervon gibt es eine Ausnahme. Nachdem die Eigenschaft "StrokeBrush" geändert wurde, sollte das Projekt neu erstellt werden, damit diese Änderung zur Entwurfszeit visuell ordentlich sichtbar wird. Andernfalls kann es passieren, dass bei einer späteren Änderung des Werts der Eigenschaft "StrokeThickness" die visuelle Darstellung zur Entwurfszeit verzerrt ist:


Dieses Verhalten tritt nur zur Entwurfszeit auf. Die Neuberechnung des Halbquadrats wird im Hintergrund zwar bei jeder Änderung einer Eigenschaft durchgeführt. Jedoch wird sie zur Entwurfszeit in der besagten Konstellation nicht sofort umgesetzt, sondern erst nach einer neuen Erstellung des Projekts:



Ich bin bemüht, diese Unannehmlichkeit in einer kommenden Version zu bereinigen. Zur Laufzeit tritt dieses Verhalten nicht auf.

Euer Feedback hilft mir bei der Weiterentwicklung des UserControls.

Was kommt als Nächstes?

Soweit ich Zeit finde, werde ich weitere Alternativen für ein wiederverwendbares HalfSquare Control entwickeln. Derzeit geplant sind eine Implementierung als CustomControl und als Subklasse, die von Path erbt.

Viel Spass vorerst mit dem HalfSquareUserControl.

Download: HalfSquareUserControl als .dll (ohne Quellcode) in der Expression Gallery.

Keine Kommentare:

Kommentar veröffentlichen