Sto creando un semplice controllo personalizzato che si estende dal pulsante di attivazione/disattivazione che consente all'utente di specificare il contenuto selezionato e deselezionato direttamente in XAML. Funziona bene ma si basa su un trigger e non so come definire il trigger tranne in uno stile. Se definisco lo stile, perdo tutto ciò che è impostato al di fuori del controllo personalizzato.Come aggiungere un trigger a un controllo personalizzato WPF senza sovrascrivere lo stile esistente?
Quello che vorrei essere in grado di fare è semplicemente aggiungere questo trigger a qualsiasi stile esistente impostato altrove sul controllo.
Ecco lo XAML per lo stile/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>
ho provato ereditando lo stile attraverso il BasedOn con un tipo di default, ma non funziona se il controllo personalizzato ha uno stile esplicito fissato dal suo genitore. Ho anche considerato EventTriggers ma non credo che ci sarebbe un evento per inizializzare il controllo.
Grazie per l'aiuto che chiunque può offrire. :)
Grazie per l'input, è stato molto utile. Ho seguito un percorso leggermente diverso e ho esteso lo stile esistente nel codice per aggiungere il mio trigger senza rovinare quello esistente. Il suggerimento di BasedOn che hai fatto l'ho già provato e non funziona se è impostato uno stile esplicito. Sono arrivato dalle tue idee, quindi lo segnalo come risposta. L'idea delle proprietà allegate era davvero buona e ho apportato anche questo cambiamento, grazie. :) –
Ti dispiacerebbe postare alcuni dettagli di ciò che hai fatto? Mi piacerebbe fare la stessa cosa – stone
Questo mi ha appena salvato un sacco di codice. Grazie! – MattS423