C#面试题更新 2026-08-05

请解释 WPF 依赖属性中元数据的作用,以及属性改变回调的触发时机和参数含义是什么?

技术原理C#WPF

考察说明

考查对 WPF 依赖属性系统中元数据配置和属性变更通知机制的理解。

回答思路

  1. 【回答框架 1】WPF 依赖属性通过元数据描述其行为特征,例如默认值、属性值继承、数据绑定默认方式、验证回调等。元数据在注册依赖属性时通过 PropertyMetadata 子类指定,常用的是 FrameworkPropertyMetadata,它支持更多选项,如 AffectsRender、BindsTwoWayByDefault 等。
  2. 【回答框架 2】属性改变回调(PropertyChangedCallback)是依赖属性值变化时调用的方法,参数为 DependencyObject d、DependencyPropertyChangedEventArgs e。其中 d 是发生变化的依赖对象,e 包含旧值(OldValue)和新值(NewValue)。回调中可以使用 d 进行相关 UI 更新,例如根据新值调整其他属性。
  3. 【回答框架 3】属性改变回调的触发时机包括程序显式设置值、数据绑定更改、样式或动画影响等。注意,回调并不在值未实际变化时触发,且无法直接打破依赖属性系统内部的优先级机制。
  4. 【回答框架 4】在实际使用中,属性改变回调常用于联动更新其他属性或控件,但要注意避免在回调中引入高开销操作,或可能造成性能问题的递归绑定更新。
  5. 【关键点 1】元数据可配置依赖属性的默认值、继承选项、绑定默认方向等。
  6. 【关键点 2】属性改变回调用于响应属性值变化,参数 e 提供新旧值。
  7. 【关键点 3】触发时机包括赋值、绑定、样式、动画等,但值未变时不触发。
  8. 【易错点 1】回调中不能直接修改自身属性,可能导致递归循环。
  9. 【易错点 2】元数据选项(如 AffectsRender)与回调可能影响性能。
  10. 【易错点 3】旧值比较时注意引用类型可能为 null。