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 ocultar los eventos de “hover” y “click” de UniformGrid?

Intenté crear una lista de botones con dos columnas usando un ListBox y UniformGrid. Todo parecía estar bien hasta que me encontré con el siguiente problema. El espacio del margen del botón se mostraba con un color azul claro cuando hacía clic o pasaba el mouse sobre él. ¿Cómo puedo eliminar este efecto?

Esta es mi código:

<listbox width="1000" grid.row="1" verticalalignment="Top" verticalcontentalignment="Top" name="uniformGrid1" margin="50" itemssource="{Binding SomeItemsList}">
    <listbox.itemspanel>
        <itemspaneltemplate>
            <uniformgrid columns="2" background="Transparent" name="uniformGrid1"></uniformgrid>
        </itemspaneltemplate>
    </listbox.itemspanel>
    <listbox.itemtemplate>
        <datatemplate>
            <button margin="50" height="70" click="keyword_Click" width="250" foreground="Black" fontsize="16" fontfamily="Helvetica Neue" fontweight="Bold" borderbrush="SlateGray" content="{Binding Name}">
                <button.background>
                    <lineargradientbrush endpoint="0.5,1" startpoint="0.5,0">
                        <gradientstop color="White" offset="0.073"></gradientstop>
                        <gradientstop color="White" offset="1"></gradientstop>
                        <gradientstop color="#FFE9E9F9" offset="0.571"></gradientstop>
                        <gradientstop color="#FFD7D7EC" offset="0.243"></gradientstop>
                    </lineargradientbrush>
                </button.background>
            </button>
        </datatemplate>
    </listbox.itemtemplate>
</listbox>
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar el efecto de fondo azul claro al hacer clic o al pasar el mouse sobre el botón en el ListBox, puede agregar un EventSetter al DataTemplate del ListBox.ItemTemplate.

    Aquí está un fragmento de código actualizado:

    <listbox width="1000" grid.row="1" verticalalignment="Top" verticalcontentalignment="Top" name="uniformGrid1" margin="50" itemssource="{Binding SomeItemsList}">
        <listbox.itemspanel>
            <itemspaneltemplate>
                <uniformgrid columns="2" background="Transparent" name="uniformGrid1"></uniformgrid>
            </itemspaneltemplate>
        </listbox.itemspanel>
        <listbox.itemtemplate>
            <datatemplate>
                <button margin="50" height="70" click="keyword_Click" width="250" foreground="Black" fontsize="16" fontfamily="Helvetica Neue" fontweight="Bold" borderbrush="SlateGray" content="{Binding Name}">
                    <button.background>
                        <lineargradientbrush endpoint="0.5,1" startpoint="0.5,0">
                            <gradientstop color="White" offset="0.073"></gradientstop>
                            <gradientstop color="White" offset="1"></gradientstop>
                            <gradientstop color="#FFE9E9F9" offset="0.571"></gradientstop>
                            <gradientstop color="#FFD7D7EC" offset="0.243"></gradientstop>
                        </lineargradientbrush>
                    </button.background>
                    <button.style>
                        <style targettype="{x:Type Button}">
                            <Style.Resources>
                                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
                                <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
                            </Style.Resources>
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Background" Value="White"/>
                                </Trigger>
                            </Style.Triggers>
                        </style>
                    </button.style>
                </button>
            </datatemplate>
        </listbox.itemtemplate>
    </listbox>
    

    En la sección Button.Style, primero configuramos las claves HighlightBrushKey y ControlBrushKey como transparentes, lo que elimina el fondo azul cuando se hace clic o se selecciona el ListBoxItem.

    Luego, agregamos un desencadenador que cambia el fondo del botón a blanco cuando el mouse está sobre él utilizando la propiedad IsMouseOver.

    Esto debe resolver el problema del fondo azul claro al hacer clic o al pasar el mouse sobre el botón en el ListBox.

Comments are closed.