2013-10-07 4 views
0

У меня есть следующий XAMLWPF RichTextBox увеличить размер сетки ряда

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> <!--Here Expander with RichTextBox within--> 
     <RowDefinition Height="Auto"/> <!--Here Splitter--> 
     <RowDefinition Height="*"/>  <!--Here some other controls--> 
    </Grid.RowDefinitions> 
... 

Проблема заключается в том, когда Expander открыта и RichTextBox заполняет текстовые строки автоматически увеличит heigth, а также расширитель и сетка строки высоту, то путь пункты внизу нижний ряд скользящий вниз.

Я хочу, чтобы высота строки нижней сетки не зависела от richtextbox. Могу ли я сделать это без привязки высоты RichTextBox к высоте Expander или верхней строке?

спасибо.

+0

Прямо сейчас вы сконфигурировали верхние два ряда, чтобы они занимали столько же высоты, сколько вам нужно, и вы сказали, что нижняя строка занимает все свободное место. Похоже, вам просто нужно дать RichTextBox определенную высоту или максимальную высоту, чтобы она не становилась слишком большой. –

+0

В среднем ряду у меня есть сплиттер для пользователя, который может изменить размер нижней и верхней строки, как ему заблагорассудится. Таким образом, верхние и нижние строки сетки могут не иметь фиксированных максимальных размеров. Я должен настроить высоту верхнего ряда как «Авто», потому что он основан на экспандере. – gunboxer

ответ

0

Хорошо. Я нашел лучшее решение самостоятельно.

я переработан XAML таким образом:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Name="TopRow" Height="42"/> <!--Here Expander with RichTextBox within--> 
     <RowDefinition Height="Auto"/> <!--Here GridSplitter--> 
     <RowDefinition Height="*"/>  <!--Here some other controls--> 
    </Grid.RowDefinitions> 
... 

В начале Expander всегда разрушилась. 42 - высота Expander на рухнувшем состоянии. GridSplitter считается имеющимся Visibility.Collapsed в начале.

Таким образом, я создал два триггера для расширителя:

  • OnExpanded набор TopRow.Height = 160 и GridSplitter.Visibility = Visibility.Expanded
  • OnCollapsed набор TopRow.Height = 42 и GridSplitter.Visibility = Visibility.Collapsed

вместо 160 я буду использовать старую высоту строки (перед тем collapsion). Вот и все. Кажется, все работает нормально.

спасибо.

1

Вы можете добавить еще одну строку в сетку и задать MinHeight для этой строки. Установите вертикальное выравнивание DataGrid, чтобы растянуть VerticalAlignment = Stretch. Также задайте размер по умолчанию для окна.

+0

Где мне добавить новую строку? Я не совсем понимаю. У меня нет DataGrid, но у меня есть Grid. – gunboxer

+0

Вы можете установить минимальную высоту каждой строки –

+0

Да, я могу, но это не будет препятствовать скольжению нижнего ряда до минимальной высоты. Я предполагаю, что скольжение - это не функция userfriendy как таковая. Могу ли я полностью избежать скользящего эффекта? Я не могу предсказать минимальную высоту каждой строки, так как существует Splitter. – gunboxer

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