3

ContextMenu(たとえば)のサブクラスが呼び出されていて、 withでMyContextMenuスタイルを定義している場合、このスタイルが のインスタンスに適用されないのはなぜですか?MergedDictionariesTargetType=ContextMenuMyContextMenu

基本クラスのすべてのインスタンスで機能しますが、サブクラスでは機能しません。

追加のスタイルを作成して を使用できますBasedOnが、それはクリーンではありません。それがなくてもうまくいくようです。

サブクラスが基本コンストラクターを呼び出すことを確認しDefaultStyleKey、基本クラスの型であることを確認しました。

4

1 に答える 1

3

この記事によると:

型指定されたスタイルを適用するには、TargetType が正確に一致する必要があることに注意してください。たとえば、スタイルのキーを指定する場合、ターゲット要素が TargetType のサブクラスであっても問題ありません。しかし、型付きスタイルは通常、型が正確に一致する要素に適用されます! これは、驚きを防ぐために行われます。たとえば、アプリケーション内のすべての ToggleButton に対して Style を作成し、このスタイルを (ToggleButton から派生した) CheckBox に適用したくない場合があります。

同じことが公式ドキュメントで読むことができます(中途半端)

于 2011-07-07T18:53:50.490 に答える