2011-07-18 23 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 。有关如何做到这一点的任何想法? –