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>
我的情况是一行就显示一个字符呢,放在其他地方就是对的,会不会是 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控件,文字列数,只显示一列?的主要内容,如果未能解决你的问题,请参考以下文章
将 RTF 文本设置为 WPF RichTextBox 控件
WPF自定义控件与样式-TextBox & RichTextBox & PasswordBox样式水印Label标签功能扩展