如何将TextBlock设置为可选,以便用户可以复制其文本

D J*_*D J 11 wpf xaml

可能重复:
是否可以选择WPF文本块?

我可以在WPF应用程序中选择文本块,以便用户可以复制它.

提前致谢.

DJ

Chr*_* W. 12

你可以把它变成一个只读的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>
Run Code Online (Sandbox Code Playgroud)

ScrollViewer ContentElement默认位于TextBox中,如果您愿意,也可以替换ContentPresenter.

然后付诸实施;

<TextBox Text="Blah Blah Blah you can copy me!" Style="{StaticResource ReadOnlyTextBox}"/>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

ADDENDUM:正如@doodleus在评论中指出的那样.可能需要模板绑定模板中的内容属性.由于"ContentElement"是Silverlight TextBox控件的命名部分.在不同的xaml Variants中需要注意的细微差别之一.在我最初创建示例时,我一定不会注意标签.所以对他的纠正让我感到很荣幸.

  • 你也可以在这种情况下Tab扔它:) (2认同)