WPF TabControl Unload俩次的解决方案

简介: WPF中,有些控件会多次触发Unload,有点莫名其妙~ Unload的多次触发 TabControl的内容,我是这么设置的:   在TabItem的CacheSettingView中,监听Loaded/Unloaded事件。

WPF中,有些控件会多次触发Unload,有点莫名其妙~

Unload的多次触发

TabControl的内容,我是这么设置的:

  在TabItem的CacheSettingView中,监听Loaded/Unloaded事件。

  1. 当窗口加载时,触发一次Loaded
  2. 不选中TabItem,并关闭窗口,触发一次Unloaded
  3. 但是,如果选中相应的Tab并显示了CacheSettingView内容后,再关闭窗口,会触发俩次Unloaded

 原因:俩次Unloaded,分别是由TabControl和TabItem触发的。

值得注意的是,切换Tab也会造成TabItem内控件Loaded和Unload事件的频繁调用

发多次Unload的详细情况,可以参考同事大佬的博客《Why Unload Twice

 Unload多次触发的解决方案

如何解决?你可以放弃TabControl,添加ListBox重写样式模板,也可以按照如下方案修改:

右侧的控件内容是否显示,直接绑定TabItem的选中状态。方案很简单,只是为了mark一下,以后自己方便查询~

当然,你也可以将TabItem改为RadioButton等

 

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
目录
相关文章
|
C#
WPF技术之TabControl控件
WPF TabControl控件用于创建一个选项卡式的用户界面,可以在单个窗口中显示多个视图或内容。
554 0
|
C#
WPF自定义TabControl样式
原文:WPF自定义TabControl样式 WPF自定义TabControl,TabControl美化 XAML代码: ...
4826 0
|
容器 网络架构 C#
WPF 控件库——可拖动选项卡的TabControl
原文:WPF 控件库——可拖动选项卡的TabControl 一、先看看效果   二、原理 1、选项卡大小和位置   这次给大家介绍的控件是比较常用的TabControl,网上常见的TabControl样式有很多,其中一部分也支持拖动选项卡,但是带动画效果的很少见。
1620 0
|
自然语言处理 C# C++
WPF 多语言解决方案 - Multilingual App Toolkit
原文:WPF 多语言解决方案 - Multilingual App Toolkit 1、首先安装Multilingual App Toolkit   2、新建项目,在VS中点击"工具" -> "Multilingual App Toolkit" -> "启用选定内容"     如果出现上述Issue, 打开项目AssemblyInfo.
2484 0
|
C#
wpf 自定义窗口,最大化时覆盖任务栏解决方案
原文:wpf 自定义窗口,最大化时覆盖任务栏解决方案 相信很多人使用wpf时会选择自定义美观的窗口,因此会设置WindowStyle="None" 取消自带的标题栏。但这样使用 WindowState="Maximized" 或者后台 this.WindowState = System.Windows.WindowState.Maximized; 最大化窗口会覆盖掉系统任务栏,即全屏了。
2499 0
|
C#
WPF TabControl Unload俩次的解决方案
原文:WPF TabControl Unload俩次的解决方案 WPF中,有些控件会多次触发Unload,有点莫名其妙~ Unload的多次触发 TabControl的内容,我是这么设置的:   在TabItem的CacheSettingView中,监听Loaded/Unloaded事件。
1072 0
|
C# 开发工具 编解码
WPF中在摄像头视频上叠加控件的解决方案
原文:WPF中在摄像头视频上叠加控件的解决方案 一、视频呈现   前段时间,在一个wpf的项目中需要实时显示ip摄像头,对此的解决方案想必大家都应该知道很多。在winform中,我们可以将一个控件(一般用panel或者pictruebox)的句柄丢给摄像头的sdk以实现该功能,而在wpf中我们同样可以使用该方案快速实现。
1407 0
|
C#
WPF解决方案------调用线程无法访问此对象,因为另一个线程拥有该对象
WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案 在这里以播放图片为例进行说明,代码如下: void _Timer_Elapsed(object sender, ElapsedEventArgs e) { this.
5048 0
|
C# C++ Windows
WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案
原文:WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案          首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如  WPF中不规则窗体与WebBrowser控件的兼容问题解决办法。
1314 0
|
C# 数据可视化 容器
WPF自适应可关闭的TabControl 类似浏览器的标签页
原文:WPF自适应可关闭的TabControl 类似浏览器的标签页 效果如图:   虽然说是自适应可关闭的TabControl,但TabControl并不需要改动,不如叫自适应可关闭的TabItem.
2114 0