本文告诉大家如何调试 WPF 的某个依赖属性被变更的方法

在 WPF 里面,所有的依赖属性都有带通知的功能,通过带通知的功能,可以在通知里加上断点,通过调用堆栈了解是哪个模块调用的

对依赖属性添加通知回调,可以使用如下方式

            DependencyPropertyDescriptor.FromProperty(要监听的依赖属性, typeof(对象的类型)).AddValueChanged(要监听的对象,
(sender, args) =>
{
// 在这里加上断点
});

例如调试 DataContext 的变更,可以使用如下代码

            DependencyPropertyDescriptor.FromProperty(FrameworkElement.DataContextProperty, typeof(FrameworkElement)).AddValueChanged(要监听的对象,
(sender, args) =>
{
// 在这里加上断点
});

添加断点之后,属性的变更有两个可能,第一个就是进入断点,第二个就是不进入断点,分别对应两个方向的调试。进入断点,可以通过 VisualStudio 的 调用堆栈 找到变更此依赖属性的方法,从而定位到是哪个模块变更了依赖属性

如果是不进入断点,可能是对象被换掉,试试在对应的属性上的 set 方法加上断点,或者在局部变量里面添加 Id 值,调试此变量的属性在哪被变更

一个用来调试的版本的代码放在githubgitee 欢迎访问

可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin e284ff96734a84e9d4f49d76d5de06aa21e3423b

以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。请在命令行继续输入以下代码

git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin e284ff96734a84e9d4f49d76d5de06aa21e3423b

获取代码之后,进入 LalyiheahoLujarwallu 文件夹

WPF 调试依赖属性变更方法的更多相关文章

  1. WPF的依赖属性

    Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR)属性的功能,这些服务通常统称为 WPF 属性系统.由 WPF 属 ...

  2. WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性

    原文:WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性 如果你要自定义一个图片按钮控件,那么如何在主窗体绑定这个控件上图片的Source呢? ...

  3. WPF的依赖属性和附加属性(用法解释较全)

    转:https://www.cnblogs.com/zhili/p/WPFDependencyProperty.html 一.引言 感觉最近都颓废了,好久没有学习写博文了,出于负罪感,今天强烈逼迫自己 ...

  4. wpf 的依赖属性只能在loaded 事件之后才能取到

    wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  InitializeComponent(); 之后取不到 wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  ...

  5. WPF 中依赖属性的继承(Inherits)

    WPF中依赖属性的值是是可以设置为可继承(Inherits)的,这种模式下,父节点的依赖属性会将其值传递给子节点.例如,数据绑定中经常使用的DataContextProperty: var host ...

  6. WPF利用依赖属性和命令编写自定义控件

    以实例讲解(大部分讲解在代码中) 1,新建一个WPF项目,添加一个用户控件之后在用户控件里面添加几个控件用作测试, <UserControl x:Class="SelfControlD ...

  7. WPF: 只读依赖属性的介绍与实践

    在设计与开发 WPF 自定义控件时,我们常常为会控件添加一些依赖属性以便于绑定或动画等.事实上,除了能够添加正常的依赖属性外,我们还可以为控件添加只读依赖属性(以下统称"只读属性" ...

  8. WPF 自定义依赖属性

      原博客地址:http://www.cnblogs.com/DebugLZQ/archive/2012/11/30/2796021.html    DependencyObject和Dependen ...

  9. [转]WPF的依赖属性是怎么节约内存的

    WPF升级了CLR的属性系统,加入了依赖属性和附加属性.依赖属性的使用有很多好处,其中有两点是我认为最为亮眼的: 1)节省内存的开销; 2)属性值可以通过Binding依赖于其它对象上,这就使得我的数 ...

  10. WPF 之 依赖属性与附加属性(五)

    一.CLR 属性 ​ 程序的本质是"数据+算法",或者说用算法来处理数据以期得到输出结果.在程序中,数据表现为各种各样的变量,算法则表现为各种各样的函数(操作符是函数的简记法). ...

随机推荐

  1. ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接

    ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接 是因为使用urlopen方法太过频繁,引起远程主机的怀疑,被网站认定为是攻击行为.导致u ...

  2. flume采集nginx日志文件数据到Kafka

    flume官网地址http://flume.apache.org/ #下载 wget https://mirrors.bfsu.edu.cn/apache/flume/1.9.0/apache-flu ...

  3. Java split 分割字符串避坑

    使用split进行字符串分割时需要注意2点 1.特殊字符作为分隔符时需要使用\\进行转义(如\\ -> \\\\; | -> \\| ) 特殊字符 .$|()[{^?*+\\ 例如对&qu ...

  4. SpringCloud微服务集成Dubbo

    1.Dubbo介绍 Apache Dubbo 是一款易用.高性能的 WEB 和 RPC 框架,同时为构建企业级微服务提供服务发现.流量治理.可观测.认证鉴权等能力.工具与最佳实践.用于解决微服务架构下 ...

  5. APReLU:跨界应用,用于机器故障检测的自适应ReLU | IEEE TIE 2020

    论文的工作属于深度学习在工业界的应用,借鉴计算机视觉的解决方法,针对机器故障检测的场景提出自适应的APReLU,对故障检测的准确率有很大的提升.论文整体思想应该也可以应用于计算机视觉,代码也开源了,大 ...

  6. 标准库unsafe:带你突破golang中的类型限制

    本文分享自华为云社区<突破语言golang中的类型限制>,作者:码乐. 1 简介 在使用c语言编程时,常常因为类型的问题大伤脑筋,而其他语言比如java,python默认类型又是难以改变的 ...

  7. 数据库知识 DDL/DML/DCL

    DDL DDL的概述 DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表.视图等等,DDL对这些对象和属性 ...

  8. #01-Trie,Cayley定理#51nod 1601 完全图的最小生成树计数

    题目 分析 考虑建出一棵Trie,然后最小生成树就是0的部分到1的部分连一条边, 这个可以用区间短的一方查询另一棵trie,这样时间复杂度为 \(O(n\log^2{mx})\) 方案数注意相同的 \ ...

  9. #dp#JZOJ 1281 旅行

    分析 考虑每次都是取出一个连续段置换一下, 可以预处理出相邻差的绝对值的前缀和, 但是如果正序无法知道上一段是从哪个终止的 所以倒序就可以了 代码 #include <cstdio> #i ...

  10. Ubuntu部署Django二:项目上传及测试

    首先将我们开发好的工程代码上传到服务器(Ubuntu)   用命令启动,然后进去浏览器检查,看看是否能正常启动 python3 manage.py runserver   如果 settings.py ...