Я нашел два возможных решения:
InlineUIContainer
InlineUIContainer
само по себе, кажется, опускается на следующую строку по мере необходимости.Поэтому, когда вы используете их вместе:
<FlowDocument>
<Paragraph >
<InlineUIContainer>
...
</InlineUIContainer>
...
</Paragraph>
</FlowDocument>
... тогда вы получите что-то вроде этого:
Если вы положите InlineUIContainer
s внутри TextBlock
внутри Paragraph
(и установите TextBlock.TextWrapping="Wrap"
), тогда плитки больше не будут равномерно распределяться по горизонтали, а будут складываться сбоку, как вы могли ожидать.И вы можете получить нулевой пробел между ними, убедившись, что между любыми закрывающими и открывающими тегами InlineUIContainer
нет разрывов строк или других пробелов.Тогда это выглядит так:
Figure
Figure
, по-видимому, предназначено больше для позиционирования изображений, но путем установки его Margin
иPadding
до нуля и присвоения ему фиксированного Width
и установки его HorizontalAnchor
:
<Window>
<Window.Resources>
<Style TargetType="Figure">
<Setter
Property="HorizontalAnchor"
Value="ColumnLeft"/>
<Setter
Property="Margin"
Value="0"/>
<Setter
Property="Padding"
Value="0"/>
<Setter
Property="Width"
Value="1in"/>
</Style>
</Window.Resources>
<FlowDocument>
<Paragraph>
<Figure>
<BlockUIContainer>
...
</BlockUIContainer>
</Figure>
...
</Paragraph>
</FlowDocument>
</Window>
... тогда вы получите что-то подобное в режиме прокрутки:
* 1040.s взаимодействуют с другими строками в
Paragraph
.Они могут привязываться только к одной стороне или к другой (в соответствии со свойством
HorizontalAnchor
), а не к потоке.
По этим причинам я думаю, что InlineUIContainer
может быть лучшим решением.