Seleccionar Texto de la etiqueta de WPF
SI bien no es posible selecionar el texto de una etiqueta de WPF, si se puede encontrar una forma de tener dicho funcionamiento utilizando un cuadro de texto (TextBox).
Basicamente lo que necesitamos hacer es poner un cuadro de texto, quitarle los border y ponerlo de solo lectura para que no se pueda editar el texto.
Aqui les comparto los estilos que yo utilize para hacer dicho funcionamiento
|
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 |
<style x:key="txtLabel" basedon="{x:Null}" targettype="{x:Type TextBox}">
<setter property="Foreground" value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<setter property="Background" value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
<setter property="BorderBrush" value="{StaticResource TextBoxBorder}"/>
<setter property="BorderThickness" value="1"/>
<setter property="Padding" value="1"/>
<setter property="AllowDrop" value="true"/>
<setter property="FocusVisualStyle" value="{x:Null}"/>
<setter property="ScrollViewer.PanningMode" value="VerticalFirst"/>
<setter property="Stylus.IsFlicksEnabled" value="False"/>
<setter property="IsReadOnly" value="True"></setter>
<setter property="Template">
<setter.value>
<controltemplate targettype="{x:Type TextBox}">
<microsoft_windows_themes:listboxchrome x:name="Bd" borderbrush="{TemplateBinding BorderBrush}" borderthickness="{TemplateBinding BorderThickness}" background="{TemplateBinding Background}" rendermouseover="{TemplateBinding IsMouseOver}" renderfocused="{TemplateBinding IsKeyboardFocusWithin}" snapstodevicepixels="true">
<scrollviewer x:name="PART_ContentHost" snapstodevicepixels="{TemplateBinding SnapsToDevicePixels}" fontweight="Bold" fontsize="16"/>
</microsoft_windows_themes:listboxchrome>
<controltemplate.triggers>
<trigger property="IsEnabled" value="false">
<setter property="Background" targetname="Bd" value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
<setter property="Foreground" value="Transparent"/>
</trigger>
<trigger property="IsMouseOver" value="True">
<setter property="BorderThickness" value="0"/>
<setter property="Padding" value="3,3,0,0"></setter>
</trigger>
<trigger property="IsFocused" value="True">
<setter property="BorderThickness" value="0"/>
<setter property="Padding" value="3,3,0,0"></setter>
</trigger>
</controltemplate.triggers>
</controltemplate>
</setter.value>
</setter>
</style> |
Pegamos el anterior codigo en nuestro XAML, y ya solo nos falta poner los texbox que utilizen es estilo antes pegado
|
1 |
<textbox x:name="Text" textwrapping="Wrap" text="TextBox" borderbrush="{x:Null}" background="{x:Null}" maxlength="280" isreadonly="True" /> |
Pues con eso yo solucione mi problema de poner una area de texto seleccionable en WPF, espero les sea de utilidad, y se agradecen los comentarios.

