gpt4 book ai didi

wpf - 如何使 TextBlock 成为可选择的,以便用户可以复制其文本

转载 作者:行者123 更新时间:2023-12-04 02:05:38 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。
社区在 6 天前审查了是否重新打开此问题并将其关闭:

原始关闭原因未解决





Possible Duplicate:
Any way to make a WPF textblock selectable?



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

最佳答案

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

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

关于wpf - 如何使 TextBlock 成为可选择的,以便用户可以复制其文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12720096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com