c# - 在 Windows Phone 运行时更改图像控件的 z 顺序

标签 c# silverlight windows-phone-8 z-order

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

在我的图像控制类中

    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 顺序值在 Canvas 上重新绘制图像控件?

更新1

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

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

更新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;
    }
}

关于c# - 在 Windows Phone 运行时更改图像控件的 z 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15618689/

相关文章:

image - LongListSelector 项模板中图像控件的 ChangePropertyAction

c# - 如何通过将字典值作为过滤器参数来使用 C# 驱动程序查询 MongoDb 集合

c# - Entity Framework 建议无效的字段名称

c# - 以编程方式添加到 WPF 中的 Window.Resources

wpf - 使用 .NET 4 的 WPF 中的 Sketchable,无法加载 System.Core version=2.0.5.0

c# - Windows Phone 8 中的 ListBox 自动下一行

c# - 通用运行时?

c# - 如何在 Silverlight 中为 HyperlinkBut​​ton 添加下划线?

c# - 调试 C# 时如何找出内存中生成的项目?

windows-phone-8 - 如何测试 Windows Phone 8 应用更新、迁移隔离存储设置