繁体   English   中英

WPF FlowDocument将不会填充Viewbox容器

[英]WPF FlowDocument will not fill Viewbox container

我有一个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缩放基于子对象的设计时间大小。 即使内部子对象的实际大小较大,它们仍将向RealisticWidth和ActualHeight属性报告其设计时间大小。 这有点令人困惑。

解决方法是在运行时创建包括FlowDocumentScrollViewer及其FlowDocument在内的整个内容。 然后,它们将基于当前可用空间并按预期填充内容。

在我的案例中,目的是制作一个简单的markdown解析器,该解析器将生成动态布局。 现在已经实现并且可以正常工作了:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM