Ich erstelle ein einfaches benutzerdefiniertes Steuerelement, das von der Toggle-Schaltfläche ausgeht und es dem Benutzer ermöglicht, überprüfte und ungeprüfte Inhalte direkt in XAML anzugeben. Es funktioniert gut, aber es basiert auf einem Auslöser, und ich weiß nicht, wie man den Auslöser außer in einem Stil definiert. Wenn ich den Stil definiere, dann verliere ich alles außerhalb des benutzerdefinierten Steuerelements.Wie fügt man einem benutzerdefinierten WPF-Steuerelement einen Trigger hinzu, ohne den vorhandenen Stil zu überschreiben?
Was ich gerne in der Lage wäre zu tun, ist nur diesen Trigger an jede vorhandene Stilset an anderer Stelle auf dem Steuerelement anhängen.
Hier ist der XAML für den Stil/Trigger.
<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>
Ich habe versucht, den Stil über die BasedOn mit einem Standardtyp erben, aber es wird nicht funktionieren, wenn die benutzerdefinierte Steuerung einen expliziten Stil durch seine Eltern festgelegt hat. Ich habe auch EventTriggers in Betracht gezogen, aber ich glaube nicht, dass es ein Event geben würde, um die Kontrolle zu initialisieren.
Danke für jede Hilfe, die jemand anbieten kann. :)
Danke für die Eingabe, es war sehr hilfreich. Ich ging einen etwas anderen Weg und erweiterte den bestehenden Stil im Code, um meinen Trigger hinzuzufügen, ohne den bestehenden zu ruinieren. Der BasedOn-Vorschlag, den Sie gemacht haben, hatte ich bereits ausprobiert und funktioniert nicht, wenn ein expliziter Stil festgelegt wurde. Ich bin aber von deinen Ideen gekommen, also schreibe ich es als Antwort. Die angefügte Eigenschaften Idee war wirklich gut und ich habe diese Änderung auch gemacht, danke. :) –
Würde es Ihnen etwas ausmachen, ein paar Details zu veröffentlichen, was Sie getan haben? Ich würde gerne dasselbe machen. – stone
Das hat mir gerade viel Code gespart. Vielen Dank! – MattS423