本人通过控件的右键菜单去设置控件的置顶及置底。

以Button为例,在界面上为Button添加了右键菜单,菜单中包含了置顶与置底功能

界面:

<Grid>
        <Button Content="按钮" Height="80" Width="120" >
            <Button.ContextMenu>
                <ContextMenu StaysOpen="true">
                    <MenuItem Header="置顶" Click="MenuItem_Click"/>
                    <MenuItem Header="置底" Click="MenuItem_Click_1"/>
                </ContextMenu>
            </Button.ContextMenu>
        </Button>

</Grid>

后台代码实现了置顶和置底菜单的Click事件。

代码:

/// <summary>
        /// 置顶
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            var c = sender as Control;
            var button = ContextMenuService.GetPlacementTarget(LogicalTreeHelper.GetParent(c)) as FrameworkElement;
            
            if (button == null) 
                return;

Grid parent = button.Parent as Grid;
            if (parent == null) return;

var maxZ = parent.Children.OfType<UIElement>()//linq语句,取Zindex的最大值
              .Where(x => x != button)
              .Select(x => Grid.GetZIndex(x))
              .Max();
            Grid.SetZIndex(button, maxZ + 1);
        }

/// <summary>
        /// 置底
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MenuItem_Click_1(object sender, RoutedEventArgs e)
        {
            var c = sender as Control;
            var button = ContextMenuService.GetPlacementTarget(LogicalTreeHelper.GetParent(c)) as FrameworkElement;

if (button == null)
                return;

Grid parent = button.Parent as Grid;
            if (parent == null) return;

var minZ = parent.Children.OfType<UIElement>()//linq语句,取Zindex的最大值
              .Where(x => x != button)
              .Select(x => Grid.GetZIndex(x))
              .Min();
            Grid.SetZIndex(button, minZ - 1);
        }

其中因为所有控件继承FrameworkElement,所以对其他控件也适用。

WPF控件置顶及置底功能相关推荐

  1. Avalonia跨平台入门第九篇之控件置顶和置底

    在前面分享的几篇中咱已经玩耍了Popup.ListBox多选.Grid动态分.RadioButton模板.控件的拖放效果;今天趁着有时间接着对拖放到Canvas上的控件进行置顶和置底切换的效果,最终实 ...

  2. web实现置顶、置底功能、聊天页面、锚点、滚动条、vue、scrollTop、scrollIntoView、scrollHeight

    目录 前言 1.代码实现 3.scrollTop实现置顶置底(方式一) 4.scrollIntoView实现置顶置底(方式二) 5.总结 前言 在项目中遇到聊天功能,功能涉及置顶和置底知识,由此记录一 ...

  3. 电脑桌面云便签怎么通过便签快捷键设置窗口置顶或置底?

    电脑桌面云便签Windows版既支持设置透明皮肤颜色,也可以使用便签快捷键,快捷打开云便签的某些功能或进行相关设置.那么,电脑桌面云便签怎么通过便签快捷键进行窗口置顶或置底的快捷操作设置呢? 一.打开 ...

  4. 3.BI可视化编辑器之右击菜单的“置顶、置底“实现

    一.思路 1.每次push到list数组的时候,新增一个z用来管理图层的叠放,z应该有个默认值0,如果有z值去多个z值中比较获取最大的,这样拖拽的时候,会是最高层级的的 2.样式的话z-index因为 ...

  5. wpf控件设计时支持(1)

    wpf控件设计时支持(1) 原文:wpf控件设计时支持(1) 这部分内容几乎是大家忽略的内容,我想还是来介绍一下. 本篇源码下载 1.属性元数据 在vs IDE中,在asp.net,winfrom等开 ...

  6. wpf控件设计时支持(3)

    wpf设计时调试 编辑模型 装饰器 1.wpf设计时调试 为了更好的了解wpf设计时框架,那么调试则非常重要,通过以下配置可以调试控件的设计时代码 (1)将启动项目配置成外部的visual studi ...

  7. 开源WPF控件库-AdonisUI

    原文:https://github.com/benruehl/adonis-ui 翻译:沙漠尽头的狼(谷歌翻译加持) 用于 WPF 应用程序的轻量级 UI 工具包,提供经典和增强的 Windows 视 ...

  8. WPF控件开发之自定义控件(3)

    创建 UserControl 如前所述,在 WPF 中创建控件的最简单方法是从 UserControl 派生.下面的示例演示用于定义 NumericUpDownUserControl 的 用户界面 ( ...

  9. android列表实现置顶,Android利用RecyclerView实现全选、置顶和拖拽功能示例

    Android利用RecyclerView实现全选.置顶和拖拽功能示例 发布时间:2020-08-23 16:26:42 来源:脚本之家 阅读:159 作者:爱开发 前言 今天给大家分享是如何在Rec ...

最新文章

  1. 常用的Firefox浏览器插件、Chrome浏览器插件收藏
  2. 基于遗传算法优化的BP神经网络的 非线性函数拟合
  3. 关于DataGridView的数据源绑定字符串两个值得注意的问题
  4. AOP面向切面编程在Android中的使用
  5. SparkSQL 内置函数的使用(JAVA与Scala版本)
  6. Java LineNumberInputStream available()方法与示例
  7. mysql业务数据库回退_理解MySQL数据库事务-隔离性
  8. mac用什么写python程序_mac下,有哪些python开发工具可用
  9. Python中多线程和多处理的初学者指南
  10. Python的DoS拒绝服务之TCP/SYN洪水攻击
  11. 小程序 后台返回的对象数组(每个数组添加一个新的属性值)
  12. plsql导入本地的sql文件
  13. Web应用程序系统的多用户权限控制设计及实现-总述【1】
  14. 【linux就该这么学】-09
  15. Extjs学习(3):事件和动作
  16. 计算机二级网站配置参数错误,计算机二级考试最常见的错误集合
  17. 计算机组成原理实验心得2000字,计算机组成原理实验一:基础汇编语言程序设计实验...
  18. Super Iservice 发布地图三维服务
  19. JZOJ 5442 荒诞
  20. 腾讯云修改邮箱登录方式

热门文章

  1. 轻松一刻,游戏风暴大陆笑话助你乐!
  2. 计量经济学 第四版 庞皓 课后答案
  3. 快速搭建SSM项目【最全教程】~令狐小哥版
  4. 适合初学者的 Python3爬虫获取自如网北京租房数据
  5. html拖拽垃圾桶,html5拖放-垃圾桶效果
  6. Socket网络编程和工作流程
  7. 【mysql】表名或字段名与关键字重名解决方法
  8. 电子器件系列七:看门狗
  9. 传奇永恒 X64游戏辅助汇编封包 反调试人物结构分析1
  10. USP7小分子抑制剂——抑癌蛋白新助手 | MedChemExpress