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 en “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 *