一个简单的WPF界面框架

一个简单的WPF界面框架

  想自己开发一个程序,有Menu菜单栏,点击菜单栏能够弹出相应界面。但是点击弹出的一般都是WINDOW。想要放在一个子页签下,可以用TabControl.

但是TabControl默认是显示时就加载所有子TabItem的,太笨重,而且TabItem也没法关闭释放资源。一旦页签多了,变得异常的笨。

于是开发了一个简单的基于TabControl的界面框架,支持点击菜单动态加载页面支持关闭页面

界面如下

一个简单的WPF界面框架

 

代码比较简单,有兴趣的朋友直接看源码    https://files.cnblogs.com/files/CSSZBB/%E7%95%8C%E9%9D%A2%E8%AE%BE%E8%AE%A1%E4%B8%93%E7%94%A8.zip

 

step1: 新增主界面,放入Menu控件,Menu下面放一个TabControl用来放置点击Menu后动态生成的页面。

step2:  修改TabItem的style 吧关闭按钮给添加上去,并且继承TabItem新增一个CloseTabItem控件

step3: 新增路由事件–关闭按钮点击事件。当点击关闭按钮的时候触发,在TabControl添加对该事件的关注。

step4:新写关闭按钮的点击事件,在点击事件里面触发关闭按钮点击路由事件,同事把关闭按钮所在的TabItem作为事件参数上传。

step5:TabControl收到路由事件,从事件参数中获取是哪个CloseTabItem触发了,从自己的Items中Remove移除该CloseTabItem;

step6: 手动GC.colect 。释放当前关闭的CloseTabItem所占用的资源。

 

主要使用到的知识点

1   C# gc垃圾回收机制

2   路由事件

3 :思考事件的传递与处理。比如点击某个TabItem,会切换到该TabItem。这样一个过程中,都经过了哪些事件的触发和处理。(多看源码)

 

转载于:https://www.cnblogs.com/CSSZBB/p/9505986.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101477.html原文链接:https://javaforall.net

(0)
上一篇 2021年6月11日 上午9:00
下一篇 2021年6月11日 上午10:00


相关推荐

  • edgeR:差异表达分析

    edgeR:差异表达分析edgeR 的适用性适用于 RNA Seq SAGE Seq Chip Seq CRISPR Cas9 DNAmethylati 研究 快速入门 glmapproach 相比经典方法更灵活 旗下包含 quasi likelihoodF testmethod 和 likelihoodra quasi likelihood 建议用于大量 RNA seq 数据的差异表达分析 like

    2026年3月16日
    2
  • 现在很火的龙虾(OpenClaw)到底是什么?

    现在很火的龙虾(OpenClaw)到底是什么?

    2026年3月13日
    2
  • python用pyinstaller编译成exe_pycharm编译成exe

    python用pyinstaller编译成exe_pycharm编译成exe在pycharm中使用pyinstaller生成exe文件:解决通常在cmd中用pyinstaller打包的exe文件太大的问题1、在pycharm中创建虚拟环境:2、在虚拟环境中添加打包程序所需要的库:添加国内镜像库链接,基本可以正常安装所有需要的库;添加pyinstaller工具:提示:一定要按照上面的配置进行,否则会出错在需要打包的程序中右键选中externalTools—>pyinstaller等待程序打包完成,在打包程序目录下的dist文件夹中就有生成的exe文件

    2022年8月27日
    8
  • ArrayList和LinkedList区别及使用场景

    ArrayList和LinkedList区别及使用场景ArrayList 和 LinkedList 区别及使用场景 1 LinkedList 和 ArrayList 的差别主要来自于 Array 和 LinkedList 数据结构的不同 ArrayList 是基于数组实现的 LinkedList 是基于双链表实现的 另外 LinkedList 类不仅是 List 接口的实现类 可以根据索引来随机访问集合中的元素 除此之外 LinkedList 还实现了 Deque 接口 Deque 接

    2026年3月26日
    3
  • 测试管理工具列表大全「建议收藏」

    测试管理工具列表大全「建议收藏」测试管理工具列表大全IDNameNotes1TestDirector/QualityCenter业界第一个基于Web的测试管理系统,它可以在您公司组织内进行全球范围内测试的协调。通过在一个整体的应

    2022年8月3日
    7
  • mysql外键查询_MySQL外键使用详解

    mysql外键查询_MySQL外键使用详解最近有开始做一个实验室管理系统 因为分了几个表进行存储 所以要维护表间的关联 研究了一下 MySQL 的外键 1 只有 InnoDB 类型的表才可以使用外键 mysql 默认是 MyISAM 这种类型不支持外键约束 2 外键的好处 可以使得两张表关联 保证数据的一致性和实现一些级联操作 3 外键的作用 保持数据一致性 完整性 主要目的是控制存储在外键表中的数据 使两张表形成关联 外键只能引用外表中的列

    2026年3月17日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号