gpt4 book ai didi

c# - 具有富文本、无自动换行和可选文本的 WPF 控件

转载 作者:行者123 更新时间:2023-11-30 17:40:49 27 4
gpt4 key购买 nike

我需要一个能够选择显示在里面的文本(只读)的控件,但我还需要能够使用粗体和斜体来格式化文本,因为它是期刊引用。此外,我希望控件能够根据文本或内容(拉伸(stretch))调整大小。这是一个例子:

child 和家庭行为疗法 26.1 (2004)。

我能得到的最接近的是 RichTextBox 跟随 this例子。 This TextBlock 示例也很接近,但不允许内联字体样式(粗体、斜体等)。

当前的 RichTextBox 解决方案

    richTextBox1.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible;
richTextBox1.Document.PageWidth = 1000;

为什么这不起作用:期刊可以有很长的名称,加上描述很容易到达页面的末尾,导致内容无论如何都会换行。相反,没有描述的短名称期刊仍然有一个滚动条,导致大量空白。

当前的 TextBlock/TextBox 解决方案

    <TextBox Background="Transparent"
BorderThickness="0"
Text="{Binding Text, Mode=OneWay}"
IsReadOnly="True"
TextWrapping="NoWrap" />

为什么这不起作用:我使用默认的 TextBlock 并且无法选择文本(用户应该能够复制粘贴),或者使用此 TextBox 绑定(bind)并失去样式功能。

我对 WPF 还是很陌生,对如何编辑某些控件知之甚少,例如使用 OverridesDefaultStyleControlTemplate 等按钮。我只能' 似乎找到了一个具有我需要的三个属性的控件,或者可以自定义控件以执行我想要的操作的方法。有什么想法吗?

最佳答案

我会选择自定义 TextBlockRichTextBox 似乎矫枉过正。

1) 滚动和调整大小

<ScrollViewer CanContentScroll="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<ns:SelectableTextBlock TextWrapping="NoWrap" x:Name="stb" TextSelected="stb_TextSelected"/>
</ScrollViewer>

这确保了较长文本存在滚动条而较短文本不存在滚动条。参见 this post .

2) 选择和复制/粘贴。参见 this post ,尤其是 this answer . This piece of code on Rextester表示对该示例的修改,一个自定义可选 TextBlock,带有来回突出显示的选择。

3) 样式化和绑定(bind) InlineCollection。将引用模型绑定(bind)到 TextBlock.Inlines 的各种方法,例如 here , 或 here .

关于c# - 具有富文本、无自动换行和可选文本的 WPF 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33835576/

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