トグルボタンから拡張されたシンプルなカスタムコントロールを作成しています。これにより、ユーザーはXAMLで直接チェックされたコンテンツと未チェックのコンテンツを指定できます。それはうまく動作しますが、それはトリガに基づいており、スタイル以外のトリガを定義する方法はわかりません。スタイルを定義すると、カスタムコントロールの外にあるものはすべて失われます。既存のスタイルをオーバーライドせずにWPFカスタムコントロールにトリガーを追加する方法?
私ができることを望むのは、コントロール上の他の場所に設定されている既存のスタイルにこのトリガーを追加するだけです。
ここにスタイル/トリガーのXAMLがあります。
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Content" Value="{Binding RelativeSource={RelativeSource Self}, Path=UncheckedContent}" />
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Content"
Value="{Binding RelativeSource={RelativeSource Self}, Path=CheckedContent}" />
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
私は、デフォルトのタイプでBASEDON経由スタイルを継承しようとしたが、カスタムコントロールが親によって設定された明示的なスタイルを持っている場合、それは動作しません。私はEventTriggersも考慮しましたが、コントロールを初期化するイベントはないと思います。
誰もが提供できるお手伝いをありがとう。 :)
入力いただきありがとうございました。私は少し違ったルートを行って、既存のスタイルをコードの背後に拡張して、既存のスタイルを破棄せずにトリガーを追加しました。あなたが作ったBasedOnの提案は、すでに試していたし、明示的なスタイルが設定されていればうまくいきません。私はあなたのアイデアからそこに着いたので、答えとしてマークしています。 添付のプロパティのアイデアは本当に良かったし、私もその変更を加えました、ありがとうございます。 :) –
あなたがしたことの詳細を投稿してもよろしいですか?私は同じことをしたいと思います。 – stone
これはちょうど私に多くのコードを保存しました。ありがとう! – MattS423