私のカスタムコントロールのデフォルトスタイルはGeneric.xamlで定義されており、正常に動作しています。WPFでカスタムコントロールの暗黙的なスタイルを設定する
しかし、カスタムコントロールのスタイルを変更しようとすると、コントロールを組み込んだ場合と同じように何も起こりません。 App.xamlで、私は次のようにして私のコントロールの既定のスタイルを変更しようとしています:すべてが正常に動作します。このキーを使用してこのスタイルを上記のスタイルと参照キープロパティ:
<Style TargetType="{x:Type my:CustomControl}">
<Setter Property="Background" Value="Red"/>
</Style>
私はXを設定した場合。
上記のスタイリング方法は、組み込みのコントロールでのみ機能し、カスタムコントロールでは機能しませんか、間違っていますか?カスタムコントロールのためのこのタイプのスタイリングを実現するための実行可能なソリューションはありますか?
更新 この場合、私のカスタムコントロールはSystem.Windows.Windowから派生しています。
静的コンストラクタでDefaultStyleKeyProperty.OverrideMetadataを設定しているのですか、回避策を講じていますか? – shadow32
"上記のスタイリング方法は、組み込みのコントロールでのみ機能し、カスタムコントロールでは機能しません..."いいえ、それは真実ではありません。おそらくあなたのコントロールの宣言で何か間違っていた。あなたもそれを示すべきです。 – Clemens
Clemensのコメントに続いて、新しいプロジェクトで私のケースを再現しようとしました。 TextBoxから継承するカスタムコントロールを作成するとき、暗黙的なスタイル設定は正常に機能します。しかし、まったく同じ設定を使用してウィンドウから継承するようにコントロールを変更するだけでは(暗黙的なスタイリングは機能しません)他のコントロールとは対照的に、ウィンドウを基本クラスとして使用すると暗黙のスタイリングに問題がありますか? – user6836683