在不使用Canvas控件的情况下控制Silverlight中的渲染顺序(ZOrder)

时间:2009-02-20 14:35:25

标签: silverlight xaml silverlight-2.0

我通过将UserControl添加到父控件的“Children”集合中,以编程方式将其添加到Silverlight 2中的另一个。起初这很好用。如果我对窗口执行其他操作(在我的情况下,我将整个面板滚动到视图之外,然后返回到视图中),那么它显然会更改渲染顺序并使我的控​​件落后于其他控件。我正在寻找一种控制此行为的方法,以强制我的窗口位于顶部。 Canvas控件有一个ZOrder属性,允许你设置它,但我没有使用Canvas,我正在使用网格。

我玩过使用Children.Insert和搞乱索引并且也改变了渲染顺序,但这似乎是解决问题的一种方法。我怎样才能强迫我的控制力在最前面?

- 亚光

3 个答案:

答案 0 :(得分:7)

Canvas.ZIndex适用于网格(以及从UIElement派生的任何其他控件)。

http://msdn.microsoft.com/en-us/library/bb979730(VS.95).aspx可以看出,任何派生自UIElement的东西(Silverlight中所有渲染元素的基类)都支持Canvas.ZIndex属性,以及Canvas.Top和Canvas.Left。

答案 1 :(得分:4)

在网格中,ZOrder应该由订单或子项决定。位置0位于底部,位置1位于位置0的顶部,依此类推。

我不确定我是否同意你可以将Canvas.ZIndex与网格一起使用 - 它是Canvas的附加属性,所以只有你的Grid在Canvas中才可用。

http://msdn.microsoft.com/en-us/library/system.windows.controls.canvas.zindex(VS.95).aspx

答案 2 :(得分:1)

你应该能够在Grid中使用Canvas.ZIndex,它实际上是错误名称,应该是Panel.ZIndex,但它应该可以工作。