Скрыть элементы в 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 и, по сути, к дочерним элементам.

Другие вопросы по тегам