Si potrebbe semplicemente farne un TextBox che è di sola lettura che sembra proprio un TextBlock, un po 'come;
<Style x:Key="ReadOnlyTextBox" TargetType="TextBox">
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="Padding" Value="5"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/>
<Setter Property="VerticalScrollBarVisibility" Value="Disabled"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Grid x:Name="RootElement">
<ScrollViewer x:Name="ContentElement"
Margin="{TemplateBinding Margin}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
IsTabStop="{TemplateBinding IsTabStop}"
Padding="{TemplateBinding Padding}"
HorizontalScrollBarVisibility="{TemplateBinding HorizontalScrollBarVisibility}"
VerticalScrollBarVisibility="{TemplateBinding VerticalScrollBarVisibility}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
ScrollViewer ContentElement sarebbe in una TextBox per impostazione predefinita, si potrebbe sostituire un ContentPresenter invece se ti piace anche.
Quindi applicarlo;
<TextBox Text="Blah Blah Blah you can copy me!" Style="{StaticResource ReadOnlyTextBox}"/>
Spero che questo aiuti!
ADDENDUM: Come @doodleus ha sottolineato nei commenti. Il modello che lega la proprietà del contenuto all'interno del modello potrebbe essere necessario. Poiché "ContentElement" è una parte del controllo SilverBox TextBox . Una delle piccole differenze di sfumature da osservare nelle diverse varianti xaml. Non devo aver prestato attenzione ai Tag quando ho creato l'esempio originariamente. Quindi complimenti a lui per avermi corretto.
fonte
2012-10-04 04:14:48
Ah dannazione, Jay Riggs ha ragione ... Avrei dovuto prendere in considerazione prima di reiterare. +1 –
Non è possibile rispondere alla domanda con una risposta errata con oltre 20 voti per eccesso dal link fornito. Ho votato questa domanda per riaprire. Non ha senso che abbia più di un anno. –
Ho trovato una soluzione migliore. Si prega di controllare la mia risposta qui: https://stackoverflow.com/a/45627524/332528 – torvin