有什么办法可以使WPF文本块成为可选的?
时间:2020-03-06 14:45:10 来源:igfitidea点击:
我想使显示在Witty(一个开源Twitter客户端)中的文本成为可选择的。当前使用自定义文本块显示它。我需要使用TextBlock,因为我正在使用textblock的内联来显示@username和链接并设置为超链接格式。一个常见的请求是能够复制粘贴文本。为此,我需要选择TextBlock。
我试图通过使用只读的TextBox来显示文本,使其看起来像文本块,从而使其正常工作,但由于TextBox没有内联,因此在我的情况下将无法正常工作。换句话说,我无法像使用TextBlock一样单独设置文本框内文本的样式或者格式。
有任何想法吗?
解决方案
我不确定是否可以将TextBlock设为可选,但是另一种选择是使用RichTextBox,它就像我们建议的TextBox一样,但是支持所需的格式。
为TextBlock创建ControlTemplate并在其中放置一个具有只读属性集的TextBox。
或者仅使用TextBox并将其设置为只读,然后可以更改TextBox.Style以使其看起来像TextBlock。
<TextBox Background="Transparent" BorderThickness="0" Text="{Binding Text, Mode=OneWay}" IsReadOnly="True" TextWrapping="Wrap" />
有一种替代解决方案可能适用于此博客文章中提到的RichTextBox,当用户将鼠标悬停在控件上时,它会使用触发器来换出控件模板,从而有助于提高性能。
new TextBox { Text = text, TextAlignment = TextAlignment.Center, TextWrapping = TextWrapping.Wrap, IsReadOnly = true, Background = Brushes.Transparent, BorderThickness = new Thickness() { Top = 0, Bottom = 0, Left = 0, Right = 0 } };