2011-07-18 24 views
0

我有點奇怪的問題和需求。基本上,我需要一個矩形控件,對於四邊中的每一邊(以及所有筆畫值,例如短劃線等)可以具有不同的邊框厚度不同的顏色strokeBorder控件讓我在一半的位置爲矩形的每一側提供了不同的厚​​度值,但不允許爲每個側面使用不同的顏色刷子。在XAML中定義的自定義矩形

我使用標準Canvas和捕捉Line每個邊的嘗試,但是他們不會吸附基於HorizontalAlighnmentVerticalAlignment - 一定數量的絕對位置屬性是必需的。

我會知道我的矩形的寬度,但不是它的高度 - 這意味着矩形的垂直邊需要動態調整大小。

有關如何做到這一點的任何想法?

回答

1

忘記畫布。捕捉和對齊對Canvas的孩子沒有影響。它只支持其子元素的絕對定位。

您可以定義一個帶有4個段的多邊形*,每個段都命名,以便您可以訪問其屬性,並將設置應用於每個段。多邊形拉伸形狀以適合容器(如網格),但不會扭曲筆畫寬度。

最好創建一個用戶控件包裝所有上述內容,並將4筆劃和顏色公開爲依賴屬性,以便您可以綁定它們。

注意:使用Expression Blend進行創作要容易得多,但我意識到很多人都沒有它,所以稍後當我回到自己的PC時會添加示例Xaml。

+0

有趣的想法!我今天要試一試,我會讓你知道結果。 –

+0

工作得很好,謝謝! –

0

也許你可以建立一個3x3的網格:

1 2 3 
4 5 6 
7 8 9 

並設置2底部行程,4右筆劃,6左筆劃,並使用不同顏色的8頂行程。矩形內容將位於單元格5中。

+0

這是我考慮過的一個選項,但是我不能讓'Line'元素延伸到1-2-3,7-8-9,1-4-7或3-6-9 。有關如何做到這一點的任何想法? –