当前位置:  开发笔记 > 编程语言 > 正文

如何在wpf中将项目带到前面?

如何解决《如何在wpf中将项目带到前面?》经验,为你挑选了2个好方法。

我只是将两个网格放在一起.鉴于世界上的一个状态,我希望网格A位于顶部,给定另一个世界状态,我希望网格B位于顶部.在过去,我们可以调用grid.BringToFront(),但这不再存在,我无法找到任何方法来实现这一点.

我能想到的最好的,我需要创建自己的自定义类来允许这个功能,但这似乎是过去非常简单的过度杀手.



1> Ifeanyi Eche..:

您可以使用Panel.ZIndex属性更改面板中元素的显示顺序



2> Pic Mickael..:

您必须使用Z索引属性,并且因为没有内置函数可以执行您想要的操作,所以我做了自己的事情。Z值越高,控件越靠近“ Z”。因此,您希望将控件放在顶部而不必设置任意高Z值。

因此,这是我为自己编写的一个小功能,正是为了实现这一功能。注意:这假定您使用的是Canvas和UserControls。因此,如果不是您的情况,则可能需要稍作调整。

基本上,它将获得要移动的控件的索引,然后当前位于其上方的任何控件将下降1,然后将要移动的控件放在顶部(以保持层次结构)。

    static public void BringToFront(Canvas pParent, UserControl pToMove)
    {
            try
            {
                int currentIndex = Canvas.GetZIndex(pToMove);
                int zIndex = 0;
                int maxZ = 0;
                UserControl child;
                for (int i = 0; i < pParent.Children.Count; i++)
                {
                    if (pParent.Children[i] is UserControl &&
                        pParent.Children[i] != pToMove)
                    {
                        child = pParent.Children[i] as UserControl;
                        zIndex = Canvas.GetZIndex(child);
                        maxZ = Math.Max(maxZ, zIndex);
                        if (zIndex > currentIndex)
                        {
                            Canvas.SetZIndex(child, zIndex - 1);
                        }
                    }
                }
                Canvas.SetZIndex(pToMove, maxZ);
            }
            catch (Exception ex)
            {
            }
    }

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有