c# - Xaml + InlineUIContainer 中的 RichTextBox
问题描述
鉴于以下 Xaml,为什么 100,150 处的 RichTextBox 的 123 未对齐?您会注意到,在同一个 RichTextBox 中,如果我将文本直接作为 TextBlock 内联,那么它会与正常运行保持一致。如果我把它放在 ContentPresenter 里面,它就会变得很古怪。
我尝试使用填充和边距,但无法对齐。
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<DataTemplate x:Key="Test">
<TextBlock Text="{Binding}" Foreground="Red" />
</DataTemplate>
</Window.Resources>
<Grid>
<TextBlock Text="Abc;123" Margin="100,100,0,0" />
<RichTextBox>
<RichTextBox.Document>
<FlowDocument>
<Paragraph>
<Run>Abc</Run>
<Run>;</Run>
<Run>123</Run>
</Paragraph>
</FlowDocument>
</RichTextBox.Document>
</RichTextBox>
<ContentPresenter Content="Abc;123" Margin="100,120,0,0" ContentTemplate="{StaticResource Test}" />
<RichTextBox Margin="100,150,0,0">
<RichTextBox.Document>
<FlowDocument>
<Paragraph>
<InlineUIContainer>
<TextBlock Text="Abc" />
</InlineUIContainer>
<Run>;</Run>
<InlineUIContainer>
<ContentPresenter Content="123" />
</InlineUIContainer>
</Paragraph>
</FlowDocument>
</RichTextBox.Document>
</RichTextBox>
</Grid>
</Window>
解决方案
您需要InlineUIContainer.BaselineAlignment
将ContentPresenter
.
<InlineUIContainer BaselineAlignment="Center">
<ContentPresenter Content="123" />
</InlineUIContainer>
推荐阅读
- reactjs - 应该如何编写反应页面中的脚本标记以将其正确包含在 webpack 中?
- javascript - document.queryselectorall 不适用于多个类 javascript
- c# - 按 id 从数据库中加载行
- selenium-webdriver - 在 Jmeter 中停止 Selenium WebDrvier 测试
- android - android content provider方法是否需要同步?
- python - 如何使用 SQLAlchemy ORM 插入子查询(将数据从一个表移动到另一个表)
- jsf - 关闭所有面板并使用 p:ajax 更新动态 p:accordionPanel
- python - 类型错误:参数 1 具有意外类型“QPushButton”
- linux - 查找和复制命令在 bash 中不起作用
- python - Python:dropbox API 中的sharing_get_shared_link_file() 示例