1

のプロパティへのバインディングのこの実装を使用するときに Resharper によって生成される「依存関係プロパティ フィールドが見つかりません」という誤ったエラーに関して、このサイトや他のサイトで多くの質問が提起されています。Googleで単純にフレーズを検索すると、この投稿の時点で「約8,550,000件の結果」が返されます。それに関するバグレポートもあります。PasswordPasswordBox

私は最近、エラーを生成しない別の実装を見つけました.Resharperが誤ったエラーを生成しない原因となるその実装の違いを見つけるのに苦労しています.

私が見る違い:

  1. BoundPasswordパスワード文字列 ( / Password)を実際に格納するプロパティFrameworkPropertyMetadataは、標準オブジェクトの代わりに 2 番目の実装のオブジェクトを使用しPropertyMetadataます。しかし、この新しい型を使用するように最初の実装を変更しても、まだエラーが発生しました。
  2. 最初の実装では、プロパティが変更されたハンドラーで代入する前にキャストを実行しますが、2 番目の実装では、両方を同じステートメントに含めます。しかし、これは単なるコーディングの好みです。最終的な結果は変わりません。

私は何が欠けていますか?

4

1 に答える 1

3

あなたが探している答えは、2年前のRSRP-174487問題のコメントで与えられました.ReSharperによって正しく処理されるために、依存関係/添付プロパティフィールド名はMicrosoftの表記法に従う必要があります. SomeNameProperty(接尾辞があります).Property

依存関係プロパティの登録は実際には動的であり、実行時に実行される場合がありますが、これは非常にまれなシナリオであり、ReSharper は「依存関係プロパティ フィールドの欠落」インスペクションをオフにトリガーするだけでサポートしています (Alt + Enter - インスペクションの抑制)。

ReSharper は、静的に既知の依存関係プロパティの登録を処理し、DP フィールドの存在を検証するように設計されていますが、Microsoft DP フィールドの命名表記に従う必要があります。エラーメッセージの方が良いのではないかと思います。

于 2012-10-24T20:07:17.240 に答える