Возможный дубликат:
Можно ли выбрать текстовый блок WPF?
Могу ли я сделать текстовый блок, который можно выбрать в приложении WPF, чтобы пользователь мог его скопировать.
Спасибо заранее.
DJ
Возможный дубликат:
Можно ли выбрать текстовый блок WPF?
Могу ли я сделать текстовый блок, который можно выбрать в приложении WPF, чтобы пользователь мог его скопировать.
Спасибо заранее.
DJ
Вы можете просто превратить его в TextBox, который доступен только для чтения, который выглядит просто как TextBlock, вроде как;
<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 по умолчанию будет в TextBox, вместо этого вы можете заменить ContentPresenter, если хотите.
Затем введем его в действие;
<TextBox Text="Blah Blah Blah you can copy me!" Style="{StaticResource ReadOnlyTextBox}"/>
Надеюсь, это поможет!
ДОБАВЛЕНИЕ: Как отметил @doodleus в комментариях. Может потребоваться шаблон, связывающий свойство Content в шаблоне. Поскольку "ContentElement" является именованной частью элемента управления Silverlight TextBox. Один из немногих нюансов, которые можно наблюдать в разных вариантах xaml. Я не должен был обращать внимание на теги, когда я изначально создал этот пример. Так что ему было приятно поправлять меня.