gpt4 book ai didi

wpf - RichTextBox 与 FlowDocumentScrollViewer - 为什么它们看起来如此不同?

转载 作者:行者123 更新时间:2023-12-04 00:08:23 26 4
gpt4 key购买 nike

我有一个非常简单的 xaml 文件,我在其中将相同的 Paragraph 和 Run 元素传递给 RichTextBox 和 FlowDocumentScrollViewer。两者看起来截然不同 - 这出乎我的意料。

我知道您可以设置 FlowDocument 或容器的样式,使它们看起来相同,但我希望它们都继承相同的“默认”设置。

这是我的代码:

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="80" />
<RowDefinition Height="80" />
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<RichTextBox Grid.Row="0">
<FlowDocument>
<Paragraph>
<Run>Here is some text</Run>
<LineBreak />
<Run>Here is some more text</Run>
</Paragraph>
</FlowDocument>
</RichTextBox>
<TextBlock Grid.Row="1" Padding="6,0,0,0">
<Run>Here is some text</Run>
<LineBreak />
<Run>Here is some more text</Run>
</TextBlock>
<FlowDocumentScrollViewer Grid.Row="2" IsHitTestVisible="True" VerticalScrollBarVisibility="Hidden">
<FlowDocument>
<Paragraph>
<Run>Here is some text</Run>
<LineBreak />
<Run>Here is some more text</Run>
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</Grid>

我的问题

是否有某种方法可以确保 RichTextBox 和 FlowDocumentScrollViewer 以相同的方式显示 FlowDocument?理想情况下,您无法分辨它们之间的区别 - 无需将页边距、字体等“硬编码”为一个或另一个。

您会注意到在我上面的示例中,我的 Textblock 需要一些 Margin 才能使其显示与 RichTextBlock 相同,但我真的想避免必须做这样的事情,因为毫无疑问会有一些字体或文化背景可怕地打破了这一切。

最佳答案

我不是 WPF 方面的专家,特别是因为我确实使用了 RichTextBox,但是使用样式(甚至可能是模板)将其中一个的属性绑定(bind)到另一个可以解决您的问题。

FlowDocument 的默认属性不同于 RTB 或 TB。 (FlowDocument 的默认字体是格鲁吉亚!!!)

    <RichTextBox>
<FlowDocument Name="rtDoc"
PagePadding="{Binding PagePadding, ElementName=flDoc}"
...
FontFamily="{Binding FontFamily, ElementName=flDoc}">
...
</FlowDocument>
</RichTextBox>
...
<FlowDocumentScrollViewer>
<FlowDocument Name="flDoc" />
</FlowDocumentScrollViewer>

希望你能用上它!

关于wpf - RichTextBox 与 FlowDocumentScrollViewer - 为什么它们看起来如此不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1603421/

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