WPF 图层管理

置顶:
private void BringToFront(List<UIElement> CurrentSelection ,UIElementCollection childrens)
       {
           List<UIElement> selectionSorted = (from item in CurrentSelection
                                              orderby Canvas.GetZIndex(item as UIElement) ascending
                                              select item as UIElement).ToList();
 
           List<UIElement> childrenSorted = (from UIElement item in childrens
                                             orderby Canvas.GetZIndex(item as UIElement) ascending
                                             select item as UIElement).ToList();
 
           int i = 0;
           int j = 0;
           foreach (UIElement item in childrenSorted)
           {
               if (selectionSorted.Contains(item))
               {
                   int idx = Canvas.GetZIndex(item);
                   Canvas.SetZIndex(item, childrenSorted.Count - selectionSorted.Count + j++);
               }
               else
               {
                   Canvas.SetZIndex(item, i++);
               }
           }
       }

置底:

private void SendToBack(List<UIElement> CurrentSelection ,UIElementCollection childrens)<BR>        {
          List<UIElement> selectionSorted = (from item in CurrentSelection
                                             orderby Canvas.GetZIndex(item as UIElement) ascending
                                             select item as UIElement).ToList();
 
          List<UIElement> childrenSorted = (from UIElement item in childrens<BR>
                                            orderby Canvas.GetZIndex(item as UIElement) ascending
                                            select item as UIElement).ToList();
          int i = 0;
          int j = 0;
          foreach (UIElement item in childrenSorted)
          {
              if (selectionSorted.Contains(item))
              {
                  int idx = Canvas.GetZIndex(item);
                  Canvas.SetZIndex(item, j++);
 
              }
              else
              {
                  Canvas.SetZIndex(item, selectionSorted.Count + i++);
              }
          }
      }

 置下一层:

private void SendBackward(List<UIElement> CurrentSelection ,UIElementCollection childrens)
<SPAN class =Apple-style-span>        {
             List<UIElement> ordered = (from item in CurrentSelection
                                        orderby Canvas.GetZIndex(item as UIElement) ascending
                                        select item as UIElement).ToList();
  
             int count = </SPAN>childrens.Count;<BR><SPAN class =Apple-style-span>
             for ( int i = 0; i < ordered.Count; i++)
             {
                 int currentIndex = Canvas.GetZIndex(ordered[i]);
                 int newIndex = Math.Max(i, currentIndex - 1);
                 if (currentIndex != newIndex)
                 {
                     Canvas.SetZIndex(ordered[i], newIndex);
                     IEnumerable<UIElement> it =</SPAN>childrens.OfType<UIElement>().Where(item => Canvas.GetZIndex(item) == newIndex);<BR><SPAN class =Apple-style-span>
                     foreach (UIElement elm in it)
                     {
                         if (elm != ordered[i])
                         {
                             Canvas.SetZIndex(elm, currentIndex);
                             break ;
                         }
                     }
                 }
             }
         }
</SPAN>

 置上一层:

private void BringForward(List<UIElement> CurrentSelection ,UIElementCollection childrens)
<SPAN class =Apple-style-span>        {
             List<UIElement> ordered = (from item in CurrentSelection
                                        orderby Canvas.GetZIndex(item as UIElement) descending
                                        select item as UIElement).ToList();
  
             int count = </SPAN>childrens.Count;<BR><SPAN class =Apple-style-span>
             for ( int i = 0; i < ordered.Count; i++)
             {
                 int currentIndex = Canvas.GetZIndex(ordered[i]);
                 int newIndex = Math.Min(count - 1 - i, currentIndex + 1);
                 if (currentIndex != newIndex)
                 {
                     Canvas.SetZIndex(ordered[i], newIndex);
                     IEnumerable<UIElement> it = this .Children.OfType<UIElement>().Where(item => Canvas.GetZIndex(item) == newIndex);
  
                     foreach (UIElement elm in it)
                     {
                         if (elm != ordered[i])
                         {
                             Canvas.SetZIndex(elm, currentIndex);
                             break ;
                         }
                     }
                 }
             }
         }
</SPAN>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值