WPF: Crear un control Linkbutton

Windows Presentation Foundation nos aporta la funcionalidad base para desde ella poder crear controles con estructuras y comportamientos más complejos.


Nos encontramos en ocasiones con que controles que eran para nosotros muy comunes en WinForms ya no está disponibles en WPF, pero sin embargo el tiempo y la complejidad que requiere implementarlos es minúsculo.


Vease por ejemplo el control LinkButton, que no está disponible en WPF y una posible implementación de este basado en un post de Irena Kennedv (Microsoft Consultant Services):


Dentro de nuestra ventana crearíamos un nuevo estilo dentro de los recursos del Grid (o de la ventana, aplicación…) y se lo aplicaríamos a un control Button de WPF mediante el atributo Style=«{StaticResource LinkButtonStyle}».
El estilo que estamos aplicando modifica la plantilla del control y le aporta el comportamiento deseado.







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<Window x:Class=«linkdemo.Window1»
xmlns=«http://schemas.microsoft.com/winfx/2006/xaml/presentation»
xmlns:x=«http://schemas.microsoft.com/winfx/2006/xaml»
Title=«linkdemo» Height=«300» Width=«300»
>
<Grid>

<Grid.Resources>
<Style x:Key=«LinkButtonStyle» TargetType=«{x:Type Button}»>
<Setter Property=«SnapsToDevicePixels» Value=«true» />
<Setter Property=«OverridesDefaultStyle» Value=«true» />
<Setter Property=«Template»>
<Setter.Value>
<ControlTemplate TargetType=«{x:Type Button}»>
<TextBlock x:Name=«tb» Background=«{x:Null}»
                  Cursor=«Hand» TextDecorations=«Underline» 
                  TextWrapping=«Wrap» >
<ContentPresenter VerticalAlignment=«Center»
                  RecognizesAccessKey=«true»/>
</TextBlock>
<ControlTemplate.Triggers>
<Trigger Property=«IsPressed» Value=«true» >
<Setter Property=«Cursor» Value=«Hand» />
<Setter TargetName=«tb» Property=«BitmapEffect»>
<Setter.Value>
<DropShadowBitmapEffect ShadowDepth=«1»
                        Direction=«330» Color=«Black» Opacity=«0.5» 
                        Softness=«0.25» />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>

<Button x:Name=«LinkButton1» Click=«LinkButton1_Click»
      Style=«{StaticResource LinkButtonStyle}»
Foreground=«Blue» Height =«18» Width=«120px» >
Escribe el texto aquí…
</Button>


</Grid>
</Window>


Y además creamos nuestro manejador del evento Click mediante un delegado en nuestro código lateral para darle funcionalidad:







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace linkdemo
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>

public partial class Window1 : System.Windows.Window
{

public Window1()
{
InitializeComponent();
}

void LinkButton1_Click(object sender, RoutedEventArgs e)
{
//Escribe tu código aquí…
}

}
}

3 comentarios sobre “WPF: Crear un control Linkbutton”

  1. Lo he reeditado para que sea visible todo el código.
    El FreeTextBoxWrapper del Community Server no tiene en cuenta el tema de mi blog a la hora de representar el código, y algunas líneas de código XAML no eran visibles.
    Disculpas a los que han sufrido el error y gracias por vuestros comentarios.
    Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *