在我的 Silverlight 4 应用程序中,我需要创建一个形状不规则的用户控件。UC 的“主显示”是一个标准矩形,但我需要在主显示矩形之外有选项卡(简单的文本块,用户可以在其中单击)。
Silverlight 4可以做到这一点吗?如果是这样,怎么做?
提前致谢。
在我的 Silverlight 4 应用程序中,我需要创建一个形状不规则的用户控件。UC 的“主显示”是一个标准矩形,但我需要在主显示矩形之外有选项卡(简单的文本块,用户可以在其中单击)。
Silverlight 4可以做到这一点吗?如果是这样,怎么做?
提前致谢。
您可以通过多种方式将控件的元素置于其正常布局之外。您可以使用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
如果您使用 CanvasLayoutRoot
而不是Grid
. 画布中的元素不会被裁剪到画布大小。但是,我不建议这样做,因为您将无法在Margin
其中调整控件的大小和对齐方式。最好将所有子控件都放在一个Grid
LayoutRoot
.
这给我们带来了不规则的问题。如果您想“看穿”控件的某些部分并能够单击它们(即单击其下方的对象),您需要做的就是保持UserControl
's 和LayoutRoot
'sBackground
为null
或根本不设置它。只要没有任何背景,点击就会通过。请注意,如果您将背景设置为Transparent
它,则相对于鼠标输入,控件将表现为一个矩形(就好像它填充了纯色一样)。
另一件事是,如果您想在应用程序的透明部分下查看 HTML 控件。然后,您将不得不使用无窗口模式,但这是另一种蠕虫。
它是,您可以在选项卡后面有透明背景,可以让点击通过,有效地表现得好像形状不同。UserControl 仍将具有包括选项卡在内的矩形形状,除非您将其包裹到 Popup 中并以一定的偏移量从 UC 中浮出。