Pregunta

Tengo un control de botón en mi aplicación WPF-MVVM.

Yo uso una propiedad ICommand (definido en el modelo de vista) para enlazar el evento de clic de botón al modelo de vista.

tengo -.> Ejecutar y parámetros canexecute para mi aplicación ICommand (RelayCommand)

Aunque CanExecute es falso ... botón no funciona ... cuando el botón está CONTENIDO DE IMAGEN

Sin embargo, cuando el contenido es botón trabajos text..enable / desactivar bien.

<Button DockPanel.Dock="Top" 
                        Command="{Binding Path=MoveUpCommand}">
                    <Button.Content>
                        <Image Source="/Resources/MoveUpArrow.png"></Image>
                    </Button.Content>
                    <Style>
                        <Style.Triggers>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Opacity" Value=".5" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </Button>
¿Fue útil?

Solución

El botón pone discapacitados, es sólo que no afecta a la representación de la imagen. Usted tendrá que escribir un disparador en el estilo que cambia la opacidad de la imagen a 0,5 y obtendrá el efecto deseado de tecla bloqueada de esta manera:

<Style x:Key="imageButton" TargetType="Button">
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Opacity" Value=".5" />
            </Trigger>
        </Style.Triggers>
</Style>

Otros consejos

Gracias! Probamos el código sugerido después de todos mis botones. No funcionó. Intentado extraer simplemente el gatillo y la inserta en un botón genérico que todos los demás botones heredados de: trabajado como un encanto! Este código primero:

<Style x:Key="SecButton" TargetType="Button">
    <Setter Property="FontSize" Value="16" />
    <Setter Property="Margin" Value="0,0,5,5" />
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Opacity" Value=".5" />
        </Trigger>
    </Style.Triggers>
</Style>

Con base en el código anterior creé botones como esto:

<Style x:Key="NewBtnStyle" TargetType="Button" BasedOn="{StaticResource SecButton}">                
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Image Source="Images/new.png" Width="50" Height="50" />
                </StackPanel>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

Cuando los botones deshabilitados, donde las imágenes en ellos se atenúa automáticamente a 0,5 opacidad.

pixel shader efecto (que no es tan complicado como parece, se trata sólo de la adición de un conjunto de referencia de un entonces usted puede utilizar tan fácilmente como cualquier incorporada efecto WPF) en combinación con el disparador similar a la que Hasan Khan publicado para mostrar los discapacitados imágenes de los botones en escala de grises.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top