如何使 TextBlock 可选择,以便用户可以复制其文本[重复]

2024-04-27

可能的重复:
有什么方法可以使 WPF 文本块可选择吗? https://stackoverflow.com/questions/136435/any-way-to-make-a-wpf-textblock-selectable

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


你可以把它变成一个只读的文本框,它看起来像一个文本块,有点像;

<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 在评论中指出的那样。可能需要在模板内绑定内容属性的模板。由于“ContentElement”是命名部分Silverlight 文本框控件的。在不同的 xaml 变体中需要注意的细微差别之一。当我最初创建示例时,我一定没有注意标签。感谢他纠正我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 TextBlock 可选择,以便用户可以复制其文本[重复] 的相关文章

随机推荐