저는 C# 및 VS2008에서 작업하고 있습니다.WPF - FlowDocument의 너비를 조정하십시오.
상당수의 짧은 줄 (예 : 기간 및 줄 바꿈)이 포함 된 단락이 포함 된 FlowDocument가 포함 된 WPF 응용 프로그램이 있습니다. 그러나 줄의 길이는 다양합니다. FlowDocument의 너비가 줄 바꿈없이이 줄 중에서 가장 긴 줄을 수용하기에 충분히 커서 좋지만 공간을 낭비하지 않기 위해 더 넓지는 않을 것입니다.
너비 = 자동으로 그리드 열에 넣는 것은 작동하지 않습니다. FlowDocument가 여러 너비에 맞게 유효하게 줄 바꿈 할 수 있기 때문에 FlowDocument는 항상 허용되는 최대 너비를 소비합니다.
코드에서 코드를 생성하고 각 코드의 폭을 계산할 때 줄을 통과 할 수는 있지만 Span 또는 Run 클래스에는 Width 속성이 표시되지 않습니다.
이 문서의 너비를 자동 또는 수동으로 설정하는 방법에 대한 아이디어가 있으십니까?
나는 AndrewS가 제안한 아이디어를 사용하여 FlowDocument에서 각 줄이 들어있는 레이블의 StackPanel로 옮겼습니다.
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);
크기 조정은 이제 완벽하고 유일한하다가 글꼴이 정확히 같은 보이지 않는 경우 : XAML 마크 업
<Border BorderThickness="2" Margin="2" BorderBrush="Black">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<StackPanel
Orientation="Vertical"
x:Name="itemsStackPanel" />
</ScrollViewer>
</Border>
코드는 스팬을 생성하고 다음과 같이 추가합니다입니다 패밀리와 글꼴 크기가 같고 (Segoe UI, 15pt) 글꼴이 있지만 FlowDocument의 레이블이 FlowDocument의 줄보다 훨씬 더 멀리 보이기는하지만 그 옆에 FlowDocument가 있습니다. 나는 이것을 묻습니다 a separate question