2

我在画布上放置了几个图像控件。z order当用户单击应用栏按钮时,我想更改所选图像控件的。

image control我的课上

    public int ImageZOrder 
    { 
        get
        {
            return _imageZOrder;            
        }
        set 
        {
            _imageZOrder = value;
            Canvas.SetZIndex(ImageControl, _imageZOrder);
        }

    }

在应用栏中

    private void appBarFront_Click(object sender, EventArgs e)
    {
        currentCharObject.ImageZOrder += 1;
    }

我期待看到所选图像立即被带到其他图像控件的前面。但是上面的代码不起作用。显然我错过了一些东西。我是否必须使用新的 z 顺序值重新绘制画布上的图像控件?

更新 1

在 XAML 中,我有以下内容。每个图像都作为孩子添加到cvsNote

    <Grid x:Name="GridCanvas" Grid.Row="0">
        <Canvas x:Name="cvsNote" />
    </Grid>

更新 2 我只想补充一点,“图像控件”包含在一个特定的类中,它只是该类的许多属性之一。

4

2 回答 2

2

您可以在代码中更改 ZIndex。

假设这个 xaml:

<Canvas Grid.Row="1" Tap="gridTapped">
    <Image x:Name="ImgA" Source="Assets/A.png" />
    <Image x:Name="ImgB" Source="Assets/B.png" />
    <Image x:Name="ImgC" Source="Assets/C.png" />
</Canvas>

您可以使用以下内容更改位于顶部的图像:

private int TopZindex = 10;

private void gridTapped(object sender, GestureEventArgs e)
{
    var rand = new Random();
    switch (rand.Next(0, 3))
    {
        case 0:
            Canvas.SetZIndex(this.ImgA, ++TopZindex);
            break;
        case 1:
            Canvas.SetZIndex(this.ImgB, ++TopZindex);
            break;
        case 2:
            Canvas.SetZIndex(this.ImgC, ++TopZindex);
            break;
    }
}
于 2013-03-25T17:00:23.660 回答
0

您可以更改画布中子图像的顺序

<Canvas>
    <Image Name="a"/> 
    <Image Name="b"/> 
    <Image Name="c"/> 
</Canvas>

更改顺序

<Canvas>
    <Image Name="c"/> 
    <Image Name="a"/> 
    <Image Name="b"/> 
</Canvas>

将更改 z 顺序。

如果您想在代码中完成此操作,例如:

List<Image> AllImages= new List<Image>();
...
Canvas.Children.Remove(img1); //This will remove img1, 
Canvas.Children.Add(img1);    //This will add img1 to the tail.
于 2013-03-25T15:39:27.253 回答