Controles con comportamiento de botón
En algunas ocasiones necesitamos que determinado control tenga comportamiento de botón. Este es el caso de imágenes o contenedores enteros de tipo Grid o StackPanel que necesitamos que, al hacer una pulsación sobre ellos, ejecuten una determinada acción. Dicho comportamiento lo podríamos realizar con un evento de tipo Click o Tap, pero suele ser más cómodo, a la vez que da una mejor experiencia de usuario, usar un Command (esto es porque el Command, al mover un poco la yema del dedo sobre el botón sin salir del control, sigue realizando el comando mientras que los eventos Click y Tap no).
Para estos casos lo mejor que podemos hacer es utilizar un estilo personalizado para el Button que vacíe, por así decirlo, el template habitual del botón.
<Style x:Key="BtnEmptyStyle" TargetType="ButtonBase"> <Setter Property="Background" Value="Transparent" /> <Setter Property="Padding" Value="0" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ButtonBase"> <Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" toolkit:TiltEffect.IsTiltEnabled="True"> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style>
El efecto tilt utiliza librerías del Toolkit de Windows Phone así que tendréis que añadir su xmlns (y bajar el Toolkit de NuGet si no lo tenéis ya).
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
De esta forma nos ahorramos bordes, paddings y margins propios del botón haciendo que este sea tan solo un contenedor al que podemos añadir Commands y, al que añadiremos también, para dar efecto de pulsado, el efecto “titl”.
Creado el estilo, sólo nos falta envolver el control de la vista con un botón de este tipo.
<Button Style="{StaticResource BtnEmptyStyle}" Command="{Binding CmdSeeDetails}"> <Button.Content> <Image Source="/Assets/Icons/Details.png" Margin="12"/> </Button.Content> </Button>