gpt4 book ai didi

c# - WPF - 计算 FlowDocument 的宽度

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:49 24 4
gpt4 key购买 nike

我正在使用 C# 和 VS2008。

我有一个包含 FlowDocument 的 WPF 应用程序,其中包含一个段落,其中包含许多相当短的行(即 Spans 和 LineBreaks)。但是,行的长度各不相同。我希望 FlowDocument 的宽度足够大以容纳最长的这些行而不换行,但不要太宽以免浪费空间。

将其放入 Width=Auto 的网格列中不起作用:FlowDocument 始终占用允许的最大宽度,因为 FlowDocument 可以有效地换行以适应多种不同的宽度。

当我在代码中生成它们时,我可以遍历这些行,并计算出每行的宽度,但我在 Span 或 Run 类上看不到 Width 属性。

关于如何自动或手动设置此文档的宽度的任何想法?


我使用了 AndrewS 的建议想法,并将 FlowDocument 移动到 StackPanel 标签,每个标签包含一行。 XAML 标记是

<Border BorderThickness="2" Margin="2" BorderBrush="Black">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<StackPanel
Orientation="Vertical"
x:Name="itemsStackPanel" />
</ScrollViewer>
</Border>

代码创建 span 并按如下方式添加它们:

        Label itemLabel = new Label();
// pad left and right, keep close top and bottom
itemLabel.Padding = new Thickness(2,0,2,0);
itemLabel.Content = contentSpan;
this.itemsStackPanel.Children.Add(itemLabel);

现在调整大小是完美的,唯一的障碍是字体看起来与旁边的 FlowDocument 不完全一样,尽管字体系列和字体大小相同(Segoe UI,15pt),而且标签看起来比 FlowDocument 中的线条更远。我问这个是 a separate question

最佳答案

您可以用不同类型的元素替换这些行,例如 TextBlocks 或 Labels(您可以控制换行)或“专为固定格式文档演示和打印方案设计”的 Glyphs。

我真的不认为你想尝试测量线条和强制文档宽度。

关于c# - WPF - 计算 FlowDocument 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/857639/

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