我有一个非常简单的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一样,但我真的想避免做这样的事情,因为毫无疑问会出现某些字体的情况或文化背景打破了这一切。
答案 0 :(得分:2)
我不是WPF的专家,特别是因为我真的使用了RichTextBox,但是使用样式(或许甚至是模板)将任何一个的属性绑定到另一个上也许可以解决你的问题。
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>
希望你能用它!