如何解决如何在WPF RichTextBox中使文本底部对齐
| 如何在RichTextBox中底部对齐文本?似乎控件不直接支持它。所以我正在寻找模仿它的方法。理想情况下,我将使控件的边界固定,并使文本结尾与底部对齐。解决方法
文本来自TextBoxBase的默认控件模板内的,名为PART_ContentHost的ScrollViewer,该控件模板由RichTextBox包装。您应该覆盖控件模板,并让ScrollViewer将其VerticalAlignment声明为Bottom,或者将其模板绑定到VerticalContentAlignment。
下面,我完成了后者。这是从Blend中提取的默认控件模板的修改版本。我所做的唯一更改是将HorizontalAlignment = \“ {{TemplateBinding VerticalAlignment} \”添加到ScrollViewer。
(还要注意,它引用了定义为xmlns:Microsoft_Windows_Themes = \“ clr-namespace:Microsoft.Windows.Themes; assembly = PresentationFramework.Aero \”的Microsoft_Windows_Themes。
我不确定如果用户的机器上没有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\" />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。