2

添付プロパティがあり、設計時アセンブリを使用して設計者に登録しています。AttachedPropertyBrowsableForTypeAttributeを使用しているので、TextBoxが選択されたときにプロパティが表示されます。

このプロパティは、Expression Blend 4では正常に表示されますが、Visual Studio2010SP1では表示されません。

Expression Blend

Visual Studio

Visual Studioに表示されない理由を誰かが知っていますか?ここから問題を示すテストプロジェクトをダウンロードできます: テストプロジェクト

ありがとう!

4

1 に答える 1

1

簡単な答えは、サイダーのデザイナーが完全にがらくただからです。より長い答えは次のとおりです。

マイクロソフトのブログから:

覚えておくべきことの 1 つは、デザイナーで添付プロパティを表示するための要件の 1 つは、所有する型がデザイナーによって読み込まれている必要があるということです。これは、型が XAML ソース内にあるか、XAML ソースから読み込まれた要素の依存関係であるため、デザイナーがその型にアクセスするたびに発生します。

したがって、問題は、Cider デザイナーが既にロードされている型のみを気にすることです。含まれている Grid を StackPanel に変更すると、この例を確認できます。Grid.Row および Grid.Column 添付プロパティは、Visual Studio 内の TextBox プロパティのリストから消えます。Blend のデザイン サーフェイスは、どういうわけかより寛容で、ユーザーのタイプを認識します。さらに、Blend は、StackPanel を使用している場合でも、Grid.IsSharedSizeScope (レイアウト プロパティの下) を忠実に表示します。

Microsoft が添付プロパティをどのように使用およびサポートしているかを見ると、レイアウト コンテナーでの使用を好むようです。たとえば、AttachedPropertyBrowsableForChildrenAttributeがあります。これは、Canvas 要素の子に対して Canvas.Left を表示するようなことができるようにするためです。今日、ほとんどの人が実際に添付プロパティをどのように使用しているかについて、彼らは十分に考慮していなかったという印象を受けます (機能をオブジェクトの側にボルトで固定するのではなく、機能を親から下り坂に流すのです)。

于 2011-12-09T01:23:52.790 に答える