Скрыть элементы в DockPanel и изменить размер
<DockPanel>
<TreeView DockPanel.Dock="Bottom" />
<DataGrid DockPanel.Dock="Bottom" Visibility="Collapsed"/>
</DockPanel>
По сути, я хочу, чтобы первый TreeView заполнил оставшееся пространство, которое занимает вторая DataGrid, когда он "свернут".
И если бы я должен был установить для первого TreeView значение "Collapsed", я бы хотел, чтобы второй объект увеличивался в высоте, когда для него установлено значение Visible.
Это не работает из-за LastChildFill. Но даже если я установлю его в false, я не могу заставить элементы соответствовать должным образом, когда один свернут. Я не могу использовать стековую панель здесь, так как стековая панель полностью игнорирует свободное пространство внутри элемента управления, поэтому она никогда не заполняет мое окно!
1 ответ
Я использовал
<DockPanel>
<Grid>
<TreeView DockPanel.Dock="Bottom" />
<DataGrid DockPanel.Dock="Bottom" Visibility="Collapsed"/>
</Grid>
</DockPanel>
И я переключаю видимость DataGrid и TreeView, когда хочу поменять местами. Сетка не пришла мне в голову, потому что я не думал, что Сетка примет форму окна. Если бы вы делали это в одиночку без DockPanel, вы бы получили сетку данных, которая ушла бы в бесконечность за пределы экрана. Но DockPanel применяет "LastFillChild" к Grid и, по сути, к дочерним элементам.