我通过“玩”System.Windows.Controls.Panel
来消磨时间。我偶然发现了_zConsonant
- Field。我只是想不通为什么这个字段有这样一个名字......有人可以解释整个“Z-Index”系统是如何工作的吗?
答案 0 :(得分:3)
控制堆叠在彼此之上。每次在容器中添加一个组件时,它都会获得一个z-index来确定它的顺序(它控制它的“在顶部”,哪个控制在下面)。
使用“Bring To Front ...”等内容进行可视化编辑,例如,将所选控件的Z-index设置为最前面的。它决定了组件的绘制顺序(这样“前面”的东西会“覆盖”后面的东西)。
在XAML中,z-index由声明的顺序决定。靠近文件底部的事物(稍后声明)具有更高的z-index(更接近前面)。
请参阅:MSDN
答案 1 :(得分:2)
你可以为初学者阅读this。
然后查看Canvas.ZIndex的文档,因为它可能会描绘出更好的图片。
TLDR; ZIndex用于指定" order"控件将显示在具有特定ZIndex的其他控件上。
奖金:我找到了一个"隐藏"控制堆叠技巧。也就是说,在XAML中,最后列出的控件将显示在另一个控件上。例如:
<Grid>
<local:MyLowerControl DataContext="{Binding}"
Visibility="{Binding IsPopupNotVisible, Converter={StaticResource convertVisibility}, Mode=TwoWay}"/>
<local:MyOverControl HorizontalAlignment="Center"
VerticalAlignment="Center"
x:Name="popup"
DataContext="{Binding}"
Visibility="{Binding IsPopupVisible, Converter={StaticResource convertVisibility}, Mode=TwoWay}" />
</Grid>
如果两个Visibilities都设置为Visible,则最后列出的控件将显示在它之前定义的任何控件上。在这种情况下,MyOverControl
会显示在MyLowerControl