为什么绑定到属性的一个实现导致“依赖属性字段缺失”而不是另一个?

时间:2012-10-24 16:06:01

标签: c# resharper attached-properties passwordbox

本网站上提出了许多问题,其他人关于"依赖属性字段缺失"使用this implementation绑定到Password PasswordBox属性时,Resharper生成的错误错误。只需使用Google搜索该短语即可返回"大约8,550,000个结果"在发布时。它上面还有一个bug report

我最近发现another implementation没有产生错误,而且我很难找到导致Resharper不会产生错误错误的实现中的差异。< / p>

我看到的差异:

  1. 实际存储密码字符串(BoundPassword / Password)的属性在第二个实现中使用FrameworkPropertyMetadata对象而不是标准PropertyMetadata对象。但是当我改变第一个实现以使用这个新类型时,我仍然遇到错误。
  2. 第一个实现在分配属性更改的处理程序之前执行转换,而第二个实现在同一个语句中同时执行。但这只是编码偏好;净结果不会改变。
  3. 我错过了什么?

1 个答案:

答案 0 :(得分:3)

您寻找的答案在2年前的RSRP-174487问题评论中给出 - 依赖/附加属性字段名称应遵循Microsoft表示法 - SomeNameProperty(具有Property后缀) - 才能正确处理通过ReSharper。

依赖属性注册实际上可能是动态的并且在运行时执行,但这是非常罕见的情况,并且ReSharper仍然通过简单地触发“依赖属性字段缺失”检查关闭(Alt + Enter - 抑制检查)来支持它。

ReSharper旨在处理静态已知的依赖项属性注册并验证是否存在DP字段,但要求您遵循Microsoft DP字段命名符号才能正常工作。我认为错误信息可能会更好,我们会继续努力。