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等

WPF TabControl Unload俩次的解决方案的更多相关文章

  1. vs2012用wpf制作透明窗口中报错的解决方案

    在开发wpf项目时,需要调用外部com组件,同时需要制作透明窗口,于是问题出现了,当我们在设置 AllowsTransparency="True"后,com组件显示不出来了,只有透 ...

  2. WPF 动态生成DataGrid及动态绑定解决方案

    一.场景 有过WPF项目经验的朋友可能都知道,如果一个DataGrid要绑定静态的数据是非常的简单的(所谓静态是指绑定的数据源的类型是静态的),如下图所示,想要显示产品数据,只需绑定到一个产品列表即可 ...

  3. WPF TabControl SelectionChanged 重复执行的问题

    很邪门的问题,我曾经都感觉是微软的bug了. 问题是这样的:在我的tabcontrol下的tabitem中有一个combobox控件,由于一些原因,需要执行tabcontrol的SelectionCh ...

  4. WPF TabControl美化

    <Window.Resources> <!-- TabItem的样式 --> <Style TargetType="{x:Type TabItem}" ...

  5. WPF TabControl 隐藏标头

    1. 将每个 TabItem 的 Visibility 属性设置为 Visibility.Collapsed 即可隐藏标头 <TabItem Visibility="Collapsed ...

  6. WPF TabControl 模拟动画

    using System; using System.Threading; using System.Windows; using System.Windows.Controls; using Wan ...

  7. wpf 绑定失效的原因及解决方案

    有时候,您会发现在程序开始时还能正常运行的绑定失效了.就个人经验而言,绑定的失效主要分为两种情况:对于One-way绑定而言,如果软件开发人员绕过绑定直接更改了目标属性,那么绑定将会失效.而对于Two ...

  8. WPF TabControl控件-事件相关问题

    TabControl控件的TabItem的Content元素,例如:DataGrid控件,在对事件的处理时,需要对事件的源引起关注,当需要处理DataGrid的事件时,事件会传递到TabControl ...

  9. WPF透明窗体不支持缩放解决方案

    方案一 WPF中的无边框透明窗体,由于没有边并且透明,窗体无法进行缩放操作,今天来讲解如何解决这个问题. 先说一下思路,我们先手为该窗体添加4个边,4个角用于缩放操作,然后再为他们写事件,完成拖放操作 ...

随机推荐

  1. vue-router路由学习总结

    vue路由 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  2. Redis 集群的安装

    Redis 集群介绍.特性.规范等Redis 集群的安装(Redis3.0.3 + CentOS6.6_x64)要让 Redis3.0 集群正常工作至少需要 3 个 Master 节点,要想实现高可用 ...

  3. 用简单的代码让一组静态图片变成gif动画

    比如这组图片:     变成这样的gif动画:   是不是很神奇....   先看html .样式.很简单,一个div,然后引入图片.   <!DOCTYPE html> <html ...

  4. SQL Server数据库可能遇到的报错

    1.操作附加操作时报错: 可能的解决方法: 退出数据库,换Windows身份验证登录,就可以了 2.插入语句报错: 1) 2)

  5. c# ef 排序字段动态,构建动态Lambda和扩展方法OrderBy

    1.动态构建排序 Lambda /// <summary> /// 获取排序Lambda(如果动态排序,类型不同会导致转换失败) /// </summary> /// < ...

  6. 马哥k8s

    https://pan.baidu.com/s/1BAX-j54bLcmWF-0ei-c-pw 31y6

  7. [Swift]LeetCode153. 寻找旋转排序数组中的最小值 | Find Minimum in Rotated Sorted Array

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  8. [Swift]LeetCode481. 神奇字符串 | Magical String

    A magical string S consists of only '1' and '2' and obeys the following rules: The string S is magic ...

  9. BBS论坛(二十八)

    28.1.帖子分页功能完成 (1)manage.py 通过命令生成100个帖子,用于测试 @manager.command def create_test_post(): for x in range ...

  10. Elasticsearch索引原理

    转载 http://blog.csdn.net/endlu/article/details/51720299 最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计 ...