本文告诉大家如何调试 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. Flutter如何状态管理

    目录介绍 01.什么是状态管理 02.状态管理方案分类 03.状态管理使用场景 04.Widget管理自己的状态 05.Widget管理子Widget状态 06.简单混合管理状态 07.全局状态如何管 ...

  2. 记录--`ElementUI` 中的奇技淫巧

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在ElementUI的世界中,不仅有基础的组件和功能,还有一些让你眼前一亮.*得不能再*的高级技巧和窍门.本文将揭示这些技巧,让你在前端开 ...

  3. 作用域&变量提升&闭包题目及内容解答

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. 代码输出结果 (function(){ var x = y = 1; })(); var z; console.log(y); // ...

  4. Boruta特征选择

    Boruta特征选择 官方github地址:https://github.com/scikit-learn-contrib/boruta_py?tab=readme-ov-file 论文地址:http ...

  5. 基于proteus的4026的二分频计数

    基于proteus的4026的二分频计数 1.芯片原理 4026还是一个CMOS芯片,是直接输出段码的计数器.显然,这个芯片的作用就是和七段数码管配合,直接将计数结果显示在数码管上.这里只是用于分频, ...

  6. docker安装es-header及相关问题解决

    安装es-header docker pull mobz/elasticsearch-head:5 docker run --restart=always --name elasticsearch-h ...

  7. 禅道16.2版本发布!主要新增专业研发看板,修复Bug

    大家好,禅道16.2发布了,本次发布在项目管理模型层面新增了专业研发看板功能,今后禅道全面支持Scrum.瀑布.看板3种项目管理模型,功能更加健全,用户选择更加灵活. 视频地址:https://www ...

  8. #构造#B 连通子图

    题目 给定正整数\(k\),构造一棵树,使得包含了\(1\)号点的连通子图个数恰好为\(k\). 连通子图就是点集的一个子集(可以为全集),使得该点集中任意两个点均可以经过该点集中的点相互到达. 分析 ...

  9. Nacos 无法注册服务

    情况描述: Nacos服务搭建完成. 引入了Nacos的依赖. <!-- SpringCloud Alibaba 服务管理 --> <dependency> <group ...

  10. windows创建bat文件进行截图

    1.创建 bat 文件 2.编辑文件内容 start snippingtool