5

MSDN やその他の情報源をよく検索した結果、「いくつかの」依存関係プロパティが実際に WPF と同様のプロパティ値の継承をサポートしていることがわかりました。ただし、私が知る限り、どのプロパティが機能し、どのプロパティが機能しないかについての明確なリストはありません。たとえば、フォントのプロパティは知っています。ただし、Horizo​​ntalContentAlignment はそうではありません。このフォーラムの他のスレッドも見ました。これは、DP Precedence リストに値の継承が含まれていないことを指摘しています ( http://msdn.microsoft.com/en-us/library/cc265148(VS.95).aspx#listing)。

さらに、継承可能なメタデータをカスタム DP に適用することさえできないようです。そのため、Silverlight フレームワークは特定のプロパティに対してカスタム ハッキングを行っているようです。どの依存関係プロパティが実際にプロパティ値の継承をサポートしているかを正確に知る必要があります。これに関する明らかな記事やスレッドを見逃していた場合は、申し訳ありませんが、検索はかなり徹底しています。

ありがとう。

4

2 に答える 2

4

あなたは Font プロパティがこれをサポートしていると述べたので、私はリフレクターを少し掘り下げて、これが興味深いことを発見しました:

テキストブロック

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x40003714, typeof(double));

コントロール

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x80003714, typeof(double));

列をなして

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x3714, typeof(double));

したがって、これら 3 つのクラスはすべて FontSizeProperty を定義し、使用される id は、最初のビットが何らかのフラグであるかのように非常によく似ています。したがって、フレームワークがこれらの類似した dp ID 間で値を転送する可能性があるため、プロパティの継承と呼んでいるものを許可する何かが内部で進行している可能性があります。

于 2009-02-03T22:32:59.350 に答える
2

MaxHeight (親の値を継承しない) と FontSize (説明どおりに伝播する) の「依存関係プロパティ情報」セクションを参照してください。

最大高さ

フォントサイズ


MSDN Web ページから:

プロパティ値の継承

要素は、ツリー内の親から依存関係プロパティの値を継承できます。

ノート:

プロパティ値の継承動作は、すべての依存関係プロパティに対してグローバルに有効になっているわけではありません。これは、継承の計算時間がパフォーマンスに影響を与えるためです。通常、プロパティ値の継承は、特定のシナリオでプロパティ値の継承が適切であると示唆されるプロパティに対してのみ有効になります。依存関係プロパティが継承されるかどうかは、SDK リファレンス でその依存関係プロパティの依存関係プロパティ情報セクションを調べることで判断できます


于 2009-05-14T14:37:51.567 に答える