2012-10-24 23 views
1

本网站和其他人提出了许多问题,关于使用this implementation绑定PasswordBoxPassword属性时由Resharper生成的“Dependency property field missing”假错误。只需在Google上搜索该短语,就会在本帖发布时返回“约8,550,000条结果”。它上面还有一个bug report为什么绑定到属性的一个实现会导致“依赖属性字段丢失”而不是另一个?

我最近发现another implementation不会产生错误,而我正在努力寻找在那个实现中找到导致Resharper不会产生错误错误的差异。

  1. 实际存储的口令字符串(BoundPassword/Password)该物业在第二个执行而不是标准PropertyMetadata对象使用FrameworkPropertyMetadata对象:

    ,我看到的差异。但是当我将第一个实现更改为使用这种新类型时,我仍然遇到了错误。

  2. 第一个实现在属性更改处理程序中分配之前执行强制转换,而第二个实例在同一个语句中执行强制转换。但这只是编码偏好;最终结果不会改变。

我错过了什么?

回答

3

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

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

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

+0

谢谢。这是在扰乱我。谁会想到会员名称可能会导致问题? – gregsdennis

+0

哇,更改'DoubleClickCommandProperty' =>'DoubleClickProperty'(我的属性名称)从我这里解决了这个问题,有趣... – Multinerd