WPF的RichTextBox控件,文字列数,只显示一列?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF的RichTextBox控件,文字列数,只显示一列?相关的知识,希望对你有一定的参考价值。

Xaml结构是
<Grid Grid.Row="1"><ListBox ItemsSource="Binding" HorizontalContentAlignment="Stretch" Background="#FF1828BE"><ListBox.ItemTemplate><DataTemplate><StackPanel><ScrollViewer Background="Beige">
<RichTextBox Background="#FF7CD71C">
<FlowDocument Background="#FFDBDB79">
<Paragraph Background="#FFDE0E81">
<Image Source="/Yhwh0jz9Tg.jpg" Width="100" Stretch="Uniform"
/>中新网7月13日电 13日上午</Paragraph></FlowDocument></RichTextBox></ScrollViewer></StackPanel></DataTemplate></ListBox.ItemTemplate></ListBox></Grid>

参考技术A richtextBox是以文档形式存放文本的,一个文档有多个block,一个block就是一行追问

我的情况是一行就显示一个字符呢,放在其他地方就是对的,会不会是 listBox限制了宽度?

追答

不是listbox 的宽度问题,是stackpanel宽度的问题,设置下stackpanel的宽度

本回答被提问者采纳
参考技术B 你可以用testblock控件

如何在 WPF RichTextBox 中底部对齐文本

【中文标题】如何在 WPF RichTextBox 中底部对齐文本【英文标题】:How to bottom align text in WPF RichTextBox 【发布时间】:2011-09-05 17:48:28 【问题描述】:

如何在 RichTextBox 中对齐文本?似乎控件不直接支持它。所以我正在寻找模仿它的方法。理想情况下,我会将控件的边界固定并且文本的结尾与底部对齐。

【问题讨论】:

【参考方案1】:

文本来自 TextBoxBase 的默认控件模板中名为 PART_ContentHost 的 ScrollViewer,该模板由 RichTextBox 包装。您应该覆盖控件模板并让 ScrollViewer 将其 VerticalAlignment 声明为 Bottom,或者将其模板绑定到 VerticalContentAlignment。

下面,我已经完成了后者。这是从 Blend 中提取的默认控件模板的修改版本。我所做的唯一更改是将 VerticalAlignment="TemplateBinding VerticalAlignment" 添加到 ScrollViewer。

(另请注意,它引用了 Microsoft_Windows_Themes,其定义为 xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"

如果 Aero 不在用户的机器上,我不确定这将如何工作)

<Style x:Key="BottomAlignedTextBoxBaseStyle" 
       TargetType="TextBoxBase"
       BasedOn="StaticResource x:Type TextBoxBase">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="x:Type TextBoxBase">
                <Microsoft_Windows_Themes:ListBoxChrome x:Name="Bd"
                                                        BorderBrush="TemplateBinding BorderBrush"
                                                        BorderThickness="TemplateBinding BorderThickness"
                                                        Background="TemplateBinding Background"
                                                        RenderMouseOver="TemplateBinding IsMouseOver"
                                                        RenderFocused="TemplateBinding IsKeyboardFocusWithin"                                                       SnapsToDevicePixels="true">
                    <ScrollViewer x:Name="PART_ContentHost"
                                  SnapsToDevicePixels="TemplateBinding SnapsToDevicePixels"
                                  VerticalAlignment="TemplateBinding VerticalContentAlignment" />
                </Microsoft_Windows_Themes:ListBoxChrome>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsEnabled"
                             Value="false">
                        <Setter Property="Background"
                                TargetName="Bd"
                                Value="DynamicResource x:Static SystemColors.ControlBrushKey"/>
                        <Setter Property="Foreground"
                                Value="DynamicResource x:Static SystemColors.GrayTextBrushKey"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

然后,要使用它,只需说:

<RichTextBox Style="StaticResource BottomAlignedTextBoxBaseStyle" 
             VerticalContentAlignment="Bottom" />

【讨论】:

我尝试使用 WPF Inspector 更改属性,但它不起作用!你试过了吗? 抱歉,我在 Style 的 BasedOn 属性中有错字。现在试试? 这是整个互联网上唯一的优雅解决方案。应该依赖所有计算机上的 PresentationFramework.Aero 还是值得将这 200 kbites 嵌入到项目中?

以上是关于WPF的RichTextBox控件,文字列数,只显示一列?的主要内容,如果未能解决你的问题,请参考以下文章

WPF RichTextBox 控件常用方法和属性

c# WPF RichTextBox 文字颜色

WPF richtextbox问题

将 RTF 文本设置为 WPF RichTextBox 控件

WPF自定义控件与样式-TextBox & RichTextBox & PasswordBox样式水印Label标签功能扩展

WPF RichTextBox 如何滚动到光标所在位置滚动条操作