我正在使用 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>
代码创建跨度并将它们添加如下:
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 中的行更远。我已将此作为一个单独的问题提出