如何创建一个不规则形状的UserControl?

时间:2011-03-30 15:14:16

标签: silverlight silverlight-4.0 controls shape

在我的Silverlight 4应用程序中,我需要创建一个不规则形状的用户控件。 UC的“主显示”是一个标准的矩形,但我需要在主显示矩形之外有标签(简单的文本块,用户可以点击)。

Silverlight 4可以实现吗?如果是这样,怎么样?

提前致谢。

3 个答案:

答案 0 :(得分:1)

它是,你可以在标签后面有透明的背景,可以让点击通过,有效地表现得好像形状不同。 UserControl仍将具有包括选项卡的矩形形状,除非您将其包装到Popup中并浮动出UC并带有一些偏移量。

答案 1 :(得分:1)

从技术上讲,如果您为UserControl而不是LayoutRoot使用Canvas,则可以在Grid的矩形之外放置元素。画布中的元素不会剪裁到画布大小。但是,我不推荐这样做,因为您将无法使用Margin来调整其中的控件的大小和对齐方式。最好将所有子控件放在Grid LayoutRoot

这让我们想到了不规范的问题。如果你想“透视”控件的某些部分并能够点击它们(即点击它下面的对象),你需要做的就是保持UserControlLayoutRoot' s Backgroundnull或根本没有设置它。只要缺少任何背景,点击就会通过。请注意,如果将背景设置为Transparent,它将使控件在鼠标输入方面表现为矩形(就好像它用纯色填充)。

另一件事是,如果您想在应用的透明部分下看到HTML控件。然后,你将不得不使用无窗口模式,但这是另一种蠕虫。

答案 2 :(得分:1)

您可以通过多种方式将控件的元素放置在其正常布局之外。您可以使用Canvas,但如果大部分控件都是标准的Grid矩形,那么您可以使用Grid。诀窍是使用负边距。

 <Grid x:Name="LayoutRoot">
     <Border Margin="0 -22 0 0">
         <TextBlock Text="I appear above the UserControl layout" />
     </Border>
 </Grid>

请注意,如果将Usercontrol用作Visual根,那么这将无效,因为Silverlight插件不会渲染其客户端矩形。