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.

Cambiar de color cuando el botón está activo (WPF en arquitectura MVVM)

<Button Command="{Binding LanguageChangeCommand}" 
        CommandParameter="English" Content="English" 
        Background="{Binding Button0}" Width="80" Grid.Column="3" Grid.Row="3" 
        Margin="8,15,162,21" Style="{Binding ActiveButtonStyle}"/>     
<Button Command="{Binding LanguageChangeCommand}" 
        CommandParameter="China" Content="中国" 
        Background="{Binding Button1}" Width="80" Grid.Column="3" Grid.Row="3" 
        Margin="78,19,77,21" Style="{Binding ActiveButtonStyle}"/>
<Button Command="{Binding LanguageChangeCommand}" 
        CommandParameter="Tamil" Content="தமிழ்" 
        Background="{Binding Button2}" Width="80" Grid.Column="3" Grid.Row="3" 
        Margin="165,15,10,21" Style="{Binding ActiveButtonStyle}"/>

Quiero cambiar el color de los botones cuando estén activos. Por favor, ayúdame.
Quiero cambiar los colores de mis botones cuando se haga clic en un botón, el color debe cambiarse y ser diferente de los otros botones. Y después de hacer clic en otro botón, el botón previamente seleccionado debe volver a su color normal y el botón recién seleccionado debe tener el color mencionado.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para cambiar el color de un botón cuando está activo, podemos usar un disparador en XAML. Dentro del estilo del botón, podemos agregar un disparador que cambiará el color de fondo del botón cuando se haga clic en él. Aquí tienes un ejemplo:

    <!-- Define el estilo para el botón -->
    <style targettype="Button">
        <Setter Property="Background" Value="{Binding Button0}" />
        <Setter Property="Width" Value="80" />
        <Setter Property="Grid.Column" Value="3" />
        <Setter Property="Grid.Row" Value="3" />
        <Setter Property="Margin" Value="8,15,162,21" />
        <!-- Agrega un disparador para cuando se hace clic en el botón -->
        <Style.Triggers>
            <Trigger Property="IsPressed" Value="True">
                <Setter Property="Background" Value="Red" />
            </Trigger>
        </Style.Triggers>
    </style>
    

    En este ejemplo, hemos agregado un disparador para la propiedad IsPressed del botón. Cuando el valor de esta propiedad es True, entonces el color de fondo del botón cambiará a Red. Puedes cambiar el color a cualquier otro que desees.

    Para aplicar este estilo a todos los botones en tu fragmento de código, puedes definir el estilo en un diccionario de recursos y luego hacer referencia a él en cada botón:

    <!-- Define el estilo en un diccionario de recursos -->
    <window.resources>
        <style x:key="ButtonStyle" targettype="Button">
            <Setter Property="Background" Value="{Binding Button0}" />
            <Setter Property="Width" Value="80" />
            <Setter Property="Grid.Column" Value="3" />
            <Setter Property="Grid.Row" Value="3" />
            <Setter Property="Margin" Value="8,15,162,21" />
            <Style.Triggers>
                <Trigger Property="IsPressed" Value="True">
                    <Setter Property="Background" Value="Red" />
                </Trigger>
            </Style.Triggers>
        </style>
    </window.resources>
    
    <!-- Usa el estilo en cada botón -->
    <button command="{Binding LanguageChangeCommand}" commandparameter="English" content="English" background="{Binding Button0}" style="{StaticResource ButtonStyle}"></button>
    <button command="{Binding LanguageChangeCommand}" commandparameter="China" content="中国" background="{Binding Button1}" style="{StaticResource ButtonStyle}"></button>
    <button command="{Binding LanguageChangeCommand}" commandparameter="Tamil" content="தமிழ்" background="{Binding Button2}" style="{StaticResource ButtonStyle}"></button>
    

    En este ejemplo, cada botón está utilizando el ButtonStyle definido en el diccionario de recursos. Esto aplicará el mismo estilo a cada botón, incluido el disparador para cambiar el color de fondo cuando se hace clic en el botón.

Comments are closed.