这可能是一个相当基本的问题,但我没有在这里或谷歌找到任何东西。任何帮助表示赞赏。
是否存在确定Windows Phone 7应用程序中对象(图像矩形等)的堆栈顺序的属性。我正在添加一些来自后面的代码和一些来自xaml。我基本上寻找的是z-index属性,但似乎不存在。
答案 0 :(得分:8)
如果Canvas中有对象,则可以使用Canvas.ZIndex属性设置堆栈顺序。
答案 1 :(得分:1)
在XAML中,项目的默认顺序与它们在标记中的显示方式相反(XAML中的最后一项出现在堆栈顶部)。
作为测试,我写了以下内容。
XAML:
<Window x:Class="Order.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Canvas Name="LayoutTest" Margin="0">
<Label Background="Red" Margin="0,0,0,0" Content="Added in XAML"/>
</Canvas>
</Grid>
</Window>
代码:
public MainWindow()
{
InitializeComponent();
for (int i = 0; i < 10; i++)
{
Label lbl = new Label();
lbl.Height = 100d;
lbl.Width = 100d;
lbl.MouseLeftButtonUp += rec_MouseLeftButtonUp;
lbl.Content = "Label number " + i.ToString();
lbl.Background = Brushes.White;
lbl.Foreground = Brushes.Black;
LayoutTest.Children.Add(lbl);
}
}
void rec_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Label obj = sender as Label;
if (null == obj) return;
obj.Visibility = Visibility.Collapsed;
}
结果是,XAML中添加的项目按照上述顺序显示在堆栈的底部。代码中添加的项目显示在它们上方,它们的顺序取决于它们的添加顺序 - 添加的第一个项目位于特定订单的底部,随着它们的添加在堆栈中越来越高。
因此,在桩的“底部”是标签
“在XAML中添加”,然后是
“标签号0”,
“标签号1”,
......到......
“标签号9”是最顶层,立即可见的项目。
讨厌!我花了10分钟证明了错误的事情。 ;)罗伊C的答案可能就是你想要的,但运气好的话,这个答案对某人有用。
答案 2 :(得分:1)
使用Canvas.ZIndex附加属性。它应该适用于所有布局容器,而不仅仅是Canvas。
在大型.NET中实际上有一个Panel.ZIndex,这更有意义,但Canvas.ZIndex似乎在WP7中运行得很好。