2016-02-08 9 views
0

У меня есть пользовательский элемент управления WPF, который я хочу загрузить с динамическим контентом в код с помощью FlowDocument: текстовые блоки, маркированные списки и т. Д. Содержимое загружается, как ожидалось. И размеры ящиков отлично смотрятся в дизайнере, но во время выполнения FlowDocument настаивает на отсечении результата и отображает только часть ширины.WPF FlowDocument не заполняет контейнер Viewbox

Мое предположение заключалось в том, что в окне «Просмотр» будет заполняться ячейка сетки и внутренний FlowDocument, чтобы заполнить все свободное пространство.

Я попытался установить значение PageWidth/PageHeigth of FlowDocument в коде, но без результата.

Любая помощь приветствуется.

<Grid x:Name="grdDisplay"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="22*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <Viewbox x:Name="viewboxContent" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Left" VerticalAlignment="Top" StretchDirection="DownOnly"> 
     <FlowDocumentScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden"> 
      <FlowDocument x:Name="flowDocument">   
      </FlowDocument> 
     </FlowDocumentScrollViewer> 
    </Viewbox> 

    <Viewbox Grid.Row="1" Grid.Column="0" VerticalAlignment="Bottom" HorizontalAlignment="Left" StretchDirection="DownOnly"> 
     <TextBlock x:Name="txtBottom" /> 
    </Viewbox> 
</Grid> 

+0

Удалить FlowDocumentScrollViewer из окна просмотра, не думайте, что вам нужно Viewbox. –

+0

Я бы избавился от окна просмотра. –

+0

Зачем избавляться от окна просмотра? Я буду динамически добавлять контент разных размеров, и я хочу, чтобы он всегда видел его целиком. Как это будет выполнено без viewbox? –

ответ

0

я, наконец, получил его на работу !!

Проблема заключается в том, что масштабирование Viewbox основано на размере времени разработки дочернего объекта. Даже если фактический размер внутренних дочерних объектов больше, они все равно будут сообщать размер своего времени разработки также свойствам ActualWidth и ActualHeight. Это пугает.

Обходным путем является создание всего содержимого, включая FlowDocumentScrollViewer и FlowDocument во время выполнения. Затем они будут основываться на текущем доступном пространстве и будут заполнять контент, как ожидалось.

В моем случае цель состояла в том, чтобы создать простой синтаксический анализатор, который будет генерировать динамическую компоновку. Это теперь реализовано и работает нормально :)

 Смежные вопросы

  • Нет связанных вопросов^_^