Estoy creando un control personalizado simple que se extiende desde el botón de alternar que permite al usuario especificar contenido marcado y no verificado directamente en XAML. Funciona bien, pero se basa en un disparador, y no sé cómo definir el desencadenador, excepto en un estilo. Si defino el estilo, entonces pierdo cualquier cosa establecida fuera del control personalizado.Cómo agregar un desencadenador a un control personalizado WPF sin anular el estilo existente?
Lo que me gustaría hacer es agregar este activador a cualquier estilo existente establecido en otra parte del control.
Aquí está el XAML para el estilo/activador.
<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>
he intentado heredar el estilo a través de la BasedOn con un tipo de defecto, pero no va a funcionar si el control personalizado tiene un estilo explícito establecido por su padre. También consideré EventTriggers, pero no creo que haya un evento para inicializar el control.
Gracias por cualquier ayuda que cualquiera pueda ofrecer. :)
Gracias por la entrada, fue muy útil. Tomé una ruta un poco diferente y extendí el estilo existente en el código para agregar mi activador sin arruinar el existente. La sugerencia de BasedOn que hizo ya lo había intentado y no funciona si se establece un estilo explícito. Llegué de tus ideas, así que lo estoy marcando como la respuesta. La idea de las propiedades adjuntas fue realmente buena e hice ese cambio también, gracias. :) –
¿Te importaría publicar algunos detalles de lo que hiciste? Me gustaría hacer lo mismo. – stone
Esto me acaba de ahorrar un montón de código. ¡Gracias! – MattS423