Как установить начальную высоту панели GridSplitter? - PullRequest
7 голосов
/ 14 апреля 2011

Я использую GridSplitter в моем окне WPF. Над сплиттером находится TreeView, ниже DockPanel, который содержит, помимо прочего, текстовое поле. Когда я выбираю элемент в TreeView, содержимое DockPanel обновляется с помощью привязки данных.

В зависимости от содержимого TextBox нижняя панель окна расширяется и сжимается в размере. Я хочу, чтобы он начинался с высоты X и оставался на этой высоте, если пользователь не перетаскивает GridSplitter.

Я попытался установить высоту нижней DockPanel в XAML, но это фиксирует высоту DockPanel, чтобы он не менялся при перемещении GridSplitter. Может быть, решение включает Grid.Row Heights?

Вот общая структура моей страницы.

Window
  Grid
    row1 Height="*":    TreeView
    row2 Height="5":    GridSplitter
    row3 Height="auto": DockPanel  // gets taller and shorter depending on its content.
      ...
      TextBox

Кстати: после того, как я перетащил GridSplitter, изменение размера прекращается, и пользовательский интерфейс ведет себя так, как я хочу.

1 Ответ

9 голосов
/ 14 апреля 2011

Явно установите Height строки сетки, для которой вы хотите иметь начальный размер.

Прямо сейчас row3 находится на Auto и изменяет размер до содержимого, как только вы перетаскиваете GridSplitter, это значение заменяется текущей высотой строки.

...