Я работаю на C# и VS2008.WPF - Разработайте ширину для FlowDocument
У меня есть приложение WPF, содержащее FlowDocument, которое содержит абзац, содержащий несколько довольно коротких строк (т. Е. Spans и LineBreaks). Однако длина линий меняется. Я бы хотел, чтобы ширина FlowDocument была достаточно большой, чтобы разместить самую длинную из этих строк без упаковки, но не шире, чтобы не тратить пространство.
Ввод его в столбец сетки с шириной = Авто не работает: FlowDocument всегда использует максимально допустимую ширину, так как FlowDocument может быть завербован в соответствии с несколькими различными ширинами.
Я мог бы пройти через строки, когда я их генерирую в коде, и выработать ширину для каждого из них, но я не вижу свойства Width на классах Span или Run.
Любые идеи о том, как автоматически или вручную установить ширину для этого документа?
Я использовал предложенную идею 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 рядом с ним, несмотря на то, что шрифт Family и Font Size одинаковый (Segoe UI, 15pt) и что ярлыки выглядят намного дальше, чем строки в FlowDocument. Я спросил это как a separate question