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

Wpf 如何将TextBlock设置为可选,以便用户可以复制其文本,wpf,xaml,Wpf,Xaml,可能重复: 我可以在WPF应用程序中选择文本块,以便用户可以复制它吗 提前谢谢 DJ你可以把它做成一个只读的文本框,看起来就像一个文本块,有点像 <Style x:Key="ReadOnlyTextBox" TargetType="TextBox"> <Setter Property="IsReadOnly" Value="True" /> <Setter Property="Padding" Value="5"/> <Setter

可能重复:

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

提前谢谢


DJ

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

<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将位于文本框中,如果您愿意,也可以替换ContentPresenter

然后实施,

<TextBox Text="Blah Blah Blah you can copy me!" Style="{StaticResource ReadOnlyTextBox}"/>

希望这有帮助


附录:正如@doodleus在评论中指出的那样。模板绑定模板中的内容属性可能是必需的。因为“ContentElement”是Silverlight TextBox控件的命名部分。在不同的xaml变体中需要注意的细微差别之一。我在最初创建示例时一定没有注意到标记。所以,他纠正了我的错误,真是太好了。

啊,该死,杰伊·里格斯是对的。。。我应该在重新迭代之前考虑一下+1在提供的链接中有超过20票赞成票的情况下,问题不能用错误答案来回答。我投票决定重新讨论这个问题。它已经一年多了,这是毫无意义的。我找到了一个更好的解决办法。请检查我的答案:是的,它对我有用。谢谢..您也可以在这种情况下使用Tab抛出:)缺少的一个关键位是scrollviewer中的以下属性:Content=“{TemplateBinding Text}”。如果没有这个,文本框中的文本将不可见。或者更好的是,只需这样做:我做到了,它需要添加我提供的内容