DependencyProperty
サブクラスののメタデータをオーバーライドする必要があります。OverrideMetadata
これで、まったく新しいオブジェクトを使用および指定できることがわかりFrameworkPropertyMetadata
ましたが、ほとんどの場合、この新しいメタデータは、1つの追加のフラグが設定されていることを除いて、既存のメタデータとまったく同じである必要があります(具体的にはAffectsMeasure
)
私の考えは、既存のメタデータを取得し、新しいメタデータオブジェクトを作成し、すべてのメンバーを古いものから新しいものに手動でコピーして(サポートしていませんClone
)、必要なものを変更してから、OverrideMetadata呼び出しで新しいものを使用することです。 。しかし、da **は、他の点では非常に単純なものにとっては多くの作業です。
ここで何かが足りませんか?
編集
まず最初に、私は(上記で変更した)ではAffectsMeasure
ないことを意味しました、AffectsRender
しかし...私はちょうど私たちのクラスがすでにプロパティにAffectsMeasure
フラグを設定していることを知りました。本当の問題は、 (たとえば)のWidth
コンテナの場合、最初に初期化されたときに1回だけ呼び出されることです。ListBox
ListBoxItem
MeasureOverride
これは技術的には無関係な質問なので、新しい質問を開始して閉じます。
新しい質問へのリンクは次のとおりです。