图像的堆叠顺序(z-index等效)

时间:2011-03-29 14:37:39

标签: c# windows-phone-7

这可能是一个相当基本的问题,但我没有在这里或谷歌找到任何东西。任何帮助表示赞赏。

是否存在确定Windows Phone 7应用程序中对象(图像矩形等)的堆栈顺序的属性。我正在添加一些来自后面的代码和一些来自xaml。我基本上寻找的是z-index属性,但似乎不存在。

3 个答案:

答案 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中运行得很好。