WPF FlowDocument不会填充Viewbox容器
我有一个WPF用户控件,我想在代码中使用FlowDocument加载动态内容:文本块,项目符号列表等。内容按预期加载。 在设计器中框的大小看起来不错,但是在运行时,FlowDocument坚持剪裁结果并仅显示部分宽度。
我的假设是,Viewbox将填充网格单元格和内部FlowDocument以填充所有可用空间。
我试图在代码中设置FlowDocument的PageWidth / PageHeigth,但没有结果。
任何帮助赞赏。
<Grid x:Name="grdDisplay">
<Grid.RowDefinitions>
<RowDefinition Height="22*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Viewbox x:Name="viewboxContent" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Left" VerticalAlignment="Top" StretchDirection="DownOnly">
<FlowDocumentScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden">
<FlowDocument x:Name="flowDocument">
</FlowDocument>
</FlowDocumentScrollViewer>
</Viewbox>
<Viewbox Grid.Row="1" Grid.Column="0" VerticalAlignment="Bottom" HorizontalAlignment="Left" StretchDirection="DownOnly">
<TextBlock x:Name="txtBottom" />
</Viewbox>
</Grid>
我终于搞定了!
问题在于Viewbox缩放基于子对象的设计时间大小。 即使内部子对象的实际大小较大,它们仍会将其设计时间大小也报告给ActualWidth和ActualHeight属性。 这有点令人困惑。
解决方法是在运行时创建包括FlowDocumentScrollViewer及其FlowDocument在内的整个内容。 然后,它们将基于当前可用空间并按预期填充内容。
在我的情况下,目的是制作一个简单的markdown解析器,它将生成动态布局。 这是现在实施和工作正常:)
链接地址: http://www.djcxy.com/p/50497.html