【发布时间】:2011-07-26 04:29:09
【问题描述】:
在我的 Silverlight 4 应用程序中,我需要创建一个形状不规则的用户控件。 UC 的“主显示”是一个标准矩形,但我需要在主显示矩形之外有选项卡(简单的文本块,用户可以在其中单击)。
Silverlight 4 可以做到这一点吗?如果有,怎么做?
提前致谢。
【问题讨论】:
标签: silverlight silverlight-4.0 controls shape
在我的 Silverlight 4 应用程序中,我需要创建一个形状不规则的用户控件。 UC 的“主显示”是一个标准矩形,但我需要在主显示矩形之外有选项卡(简单的文本块,用户可以在其中单击)。
Silverlight 4 可以做到这一点吗?如果有,怎么做?
提前致谢。
【问题讨论】:
标签: silverlight silverlight-4.0 controls shape
您可以通过多种方式将控件的元素置于其正常布局之外。您可以使用Canvas,但如果大部分控件是标准网格矩形,那么您可以使用网格。诀窍是使用负边距。
<Grid x:Name="LayoutRoot">
<Border Margin="0 -22 0 0">
<TextBlock Text="I appear above the UserControl layout" />
</Border>
</Grid>
请注意,如果将 Usercontrol 用作 Visual 根,那么这将不起作用,因为 Silverlight 插件不会呈现超出其客户矩形的范围。
【讨论】:
你可以在标签后面设置透明背景,让点击通过,有效地表现出形状不同。 UserControl 仍将具有包括选项卡在内的矩形形状,除非您将其包裹到 Popup 中并以一定的偏移量从 UC 中浮动出来。
【讨论】:
从技术上讲,如果您为LayoutRoot 使用画布而不是Grid,则可以在UserControl 的矩形之外添加元素。画布中的元素不会被裁剪到画布大小。但是,我不建议这样做,因为您将无法使用Margin 来调整其中的控件大小和对齐。最好将所有子控件都放在 Grid LayoutRoot 中。
这给我们带来了不规则的问题。如果您想“透视”控件的某些部分并能够单击它们(即单击其下方的对象),您需要做的就是保留UserControl 和LayoutRoot 的Background到null 或者根本不设置它。只要没有任何背景,点击就会通过。请注意,如果您将背景设置为Transparent,它会使控件在鼠标输入方面表现得像一个矩形(就像用纯色填充一样)。
另一件事是,如果您想在应用的透明部分下看到 HTML 控件。然后,您将不得不使用无窗口模式,但那是另一种蠕虫。
【讨论】: