在windows phone运行时更改图像控件的z顺序
本文关键字:控件 顺序 图像 windows phone 运行时 | 更新日期: 2023-09-27 18:05:51
我在画布上放置了几个图像控件。我想改变一个选定的图像控件的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 我只是想添加'image control'包含在一个特定的类中,它只是类的许多属性之一。
您可以在代码中更改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;
}
}
您可以更改画布中子图像的顺序
<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.