es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo cambiar el estilo de un botón y un bloque de texto al enlazarlos

Estoy tratando de cambiar el estilo de un botón, así como el estilo de un bloque de texto incluido en el botón a través de una vinculación sin éxito.
Quiero obtener algo como esto:

enter image description hereenter image description here

Quiero cambiar el color de primer plano de TextBlock y el grosor del borde del Button según la vinculación.

Aquí está mi código:

<button name="WeldHistory" margin="20,0,20,0" verticalalignment="Stretch" height="auto" background="{x:Null}" borderbrush="{StaticResource RedPolysoudeNormalBrush}" borderthickness="0 0 0 3" command="{Binding ScreenWeldHistoryCommand}">
    <button.contenttemplate>
        <datatemplate>
            <textblock text="{x:Static lang:UI_Text.SCREEN_PROGRAM_LIBRARY}" typography.capitals="AllSmallCaps" typography.capitalspacing="True">
                <textblock.style>
                    <style targettype="{x:Type TextBlock}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsWeldHistoryActive}"
                                         Value="False">
                                <Setter Property="Foreground" Value="red"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </style>
                </textblock.style>
            </textblock>
        </datatemplate>
    </button.contenttemplate>
</button>
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para cambiar el estilo tanto del TextBlock como del Button a través de un enlace, puedes agregar un estilo al Button que contenga tanto el BorderThickness del Button como el color Foreground del TextBlock. A continuación se muestra un ejemplo de código actualizado:

    <button name="WeldHistory" margin="20,0,20,0" verticalalignment="Stretch" height="auto" background="{x:Null}" borderbrush="{StaticResource RedPolysoudeNormalBrush}" command="{Binding ScreenWeldHistoryCommand}">
        <button.style>
            <style targettype="{x:Type Button}">
                <Setter Property="BorderThickness" Value="0 0 0 3"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsWeldHistoryActive}" Value="False">
                        <Setter Property="BorderThickness" Value="0 0 0 5"/>
                        <Setter Property="Foreground" Value="Red"/>
                    </DataTrigger>
                </Style.Triggers>
            </style>
        </button.style>
        <button.contenttemplate>
            <datatemplate>
                <textblock text="{x:Static lang:UI_Text.SCREEN_PROGRAM_LIBRARY}" typography.capitals="AllSmallCaps" typography.capitalspacing="True"></textblock>
            </datatemplate>
        </button.contenttemplate>
    </button>
    

    En este ejemplo de código, estamos definiendo un estilo para el Button que establece el BorderThickness con un valor predeterminado de “0 0 0 3”. Luego, tenemos un DataTrigger que escucha la propiedad IsWeldHistoryActive y actualiza el BorderThickness a “0 0 0 5” y el color Foreground a Rojo si el valor es Falso.

    Con este enfoque, el TextBlock no recibe su propio estilo, sino que tiene su propiedad Text y las configuraciones de tipografía establecidas directamente dentro de DataTemplate.

    Esto debería proporcionar el resultado deseado de poder cambiar tanto el BorderThickness del Button como el color Foreground del TextBlock a través de un enlace.

Comments are closed.