WPF TabControl Unload俩次的解决方案
WPF中,有些控件会多次触发Unload,有点莫名其妙~
Unload的多次触发
TabControl的内容,我是这么设置的:

在TabItem的CacheSettingView中,监听Loaded/Unloaded事件。
- 当窗口加载时,触发一次Loaded
- 不选中TabItem,并关闭窗口,触发一次Unloaded
- 但是,如果选中相应的Tab并显示了CacheSettingView内容后,再关闭窗口,会触发俩次Unloaded
原因:俩次Unloaded,分别是由TabControl和TabItem触发的。
值得注意的是,切换Tab也会造成TabItem内控件Loaded和Unload事件的频繁调用
触发多次Unload的详细情况,可以参考同事大佬的博客《Why Unload Twice》
Unload多次触发的解决方案
如何解决?你可以放弃TabControl,添加ListBox重写样式模板,也可以按照如下方案修改:

右侧的控件内容是否显示,直接绑定TabItem的选中状态。方案很简单,只是为了mark一下,以后自己方便查询~
当然,你也可以将TabItem改为RadioButton等
WPF TabControl Unload俩次的解决方案的更多相关文章
- vs2012用wpf制作透明窗口中报错的解决方案
在开发wpf项目时,需要调用外部com组件,同时需要制作透明窗口,于是问题出现了,当我们在设置 AllowsTransparency="True"后,com组件显示不出来了,只有透 ...
- WPF 动态生成DataGrid及动态绑定解决方案
一.场景 有过WPF项目经验的朋友可能都知道,如果一个DataGrid要绑定静态的数据是非常的简单的(所谓静态是指绑定的数据源的类型是静态的),如下图所示,想要显示产品数据,只需绑定到一个产品列表即可 ...
- WPF TabControl SelectionChanged 重复执行的问题
很邪门的问题,我曾经都感觉是微软的bug了. 问题是这样的:在我的tabcontrol下的tabitem中有一个combobox控件,由于一些原因,需要执行tabcontrol的SelectionCh ...
- WPF TabControl美化
<Window.Resources> <!-- TabItem的样式 --> <Style TargetType="{x:Type TabItem}" ...
- WPF TabControl 隐藏标头
1. 将每个 TabItem 的 Visibility 属性设置为 Visibility.Collapsed 即可隐藏标头 <TabItem Visibility="Collapsed ...
- WPF TabControl 模拟动画
using System; using System.Threading; using System.Windows; using System.Windows.Controls; using Wan ...
- wpf 绑定失效的原因及解决方案
有时候,您会发现在程序开始时还能正常运行的绑定失效了.就个人经验而言,绑定的失效主要分为两种情况:对于One-way绑定而言,如果软件开发人员绕过绑定直接更改了目标属性,那么绑定将会失效.而对于Two ...
- WPF TabControl控件-事件相关问题
TabControl控件的TabItem的Content元素,例如:DataGrid控件,在对事件的处理时,需要对事件的源引起关注,当需要处理DataGrid的事件时,事件会传递到TabControl ...
- WPF透明窗体不支持缩放解决方案
方案一 WPF中的无边框透明窗体,由于没有边并且透明,窗体无法进行缩放操作,今天来讲解如何解决这个问题. 先说一下思路,我们先手为该窗体添加4个边,4个角用于缩放操作,然后再为他们写事件,完成拖放操作 ...
随机推荐
- DOM与BOM
DOM 1.概念起源: 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网页上,组织页面(或文档)的对象被组织在一个树形结 ...
- C语言实型常量
实型常量又称实数或浮点数.在C语言中可以用两种形式来表示一个实型常量. 一.小数形式 小数形式的实型常量由两部分组成:数字和小数点.如:0.12.12...12都是合法的实型常量. 二.指数形式 在C ...
- ASP.NET MVC 网页应用 action 传递的Model
视图界面 @using {引用模型} @model {具体模型} <html> @Model.{具体模型的属性} </html> 注意区分Model的大小写 引入时,使用@mo ...
- Python3.x在linux下print中文问题
由于python3内部以Unicode实现,在默认非utf-8的Linux上print中文会报错UnicodeEncodeError. 由于系统默认非unicode,python3又以unicode实 ...
- IIS集中化管理与编程REST API
目录 一. 简介.... 1 二. 安装.... 1 三. IIS Administration配置文件.... 2 四. Web UI管理界面.... ...
- sha256 js 前端加密
<html> <head></head> <body> <script type="text/javascript" src= ...
- [Swift]LeetCode33. 搜索旋转排序数组 | Search in Rotated Sorted Array
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- [Swift]LeetCode301. 删除无效的括号 | Remove Invalid Parentheses
Remove the minimum number of invalid parentheses in order to make the input string valid. Return all ...
- [SQL]LeetCode596. 超过5名学生的课 | Classes More Than 5 Students
SQL架构 Create table If Not Exists courses (student varchar(), )) Truncate table courses insert into c ...
- Mysql的两种偏移量分页写法
当一个查询语句偏移量offset很大的时候,如select * from table limit 10000,10 , 先获取到offset的id后,再直接使用limit size来获取数据,效率会有 ...