Хорошо, это жалко, но я занимаюсь этим более 4 часов и не могу понять, с этим не работает, я пробовал стекпанель, сетку, докпанель, и все приходит к тому же результату
Что мне нужно, просто, нижний элемент, который будет иметь кнопки, будет иметь фиксированную высоту, а другая панель/раздел вверху заполнит все оставшееся пространство, но верхний никогда не работает, или он перекрывает нижний, или он остается на минимальной высоте при вершина.
Перекрывается:
<Grid>
<Grid VerticalAlignment = "Stretch" ></Grid>
<Grid VerticalAlignment = "Bottom" Height = "100"></Grid>
</Grid>
Один верхний становится высотой = 0
<Grid>
<Grid VerticalAlignment = "Top" ></Grid>
<Grid VerticalAlignment = "Bottom" Height = "100"></Grid>
</Grid>
Как сделать так, чтобы верхний заполнял все пространство?
Изменить ===
Для кого-то из winforms тоже: парадигма меняется, в winforms сами элементы определяют позицию, в wpf PARENT определяет позицию дочернего элемента, имейте это в виду, и у вас не будет проблем
Независимо от того, что вы устанавливаете для самого элемента, если это не в родительском элементе, это не сработает в 99% случаев.
Вы должны создавать строки в своей сетке следующим образом:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height = "*"/>
<RowDefinition Height = "Auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row = "0">
<!--Top Grid is always going to fill all remaining space not used by bottom grid-->
</Grid>
<Grid Height = "100" Grid.Row = "1">
<!--Bottom Grid will only take 100 px-->
</Grid>
</Grid>
Хорошо, что мы все с чего-то начинаем, и контейнеры компоновки в WPF иногда могут сбивать с толку.
Определите свою сетку следующим образом:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height = "*"/>
<RowDefinition Height = "100"/>
</Grid.RowDefinitions>
<Grid Grid.Row = "0" Background = "green"/>
<Grid Grid.Row = "1">
<Button Content = "MyButton"/>
</Grid>
</Grid>
Определение RowDefinitions должно помочь.
Я публикую это исключительно для того, чтобы показать, как работает док-панель. Я редко использую его сам, но для полноты:
Я был бы склонен иметь фиксированную высоту нижнего ряда в сетке.
Как было предложено в другом ответе.
Auto также действителен, если у меня была стандартная высота и ширина кнопки набора стилей.
Вот как может работать док-панель.
<DockPanel LastChildFill = "True">
<StackPanel Orientation = "Horizontal"
DockPanel.Dock = "Bottom">
<Button Content = "Button One"/>
<Button Content = "Button Two"/>
</StackPanel>
<Grid DockPanel.Dock = "Top"
Background = "Yellow"/>
</DockPanel>
Вам нужны другие панели для двух областей.
Но вы можете захотеть их в любом случае.
Желтая сетка будет заполнена по умолчанию, но я явно установил LastChildFill. Все, что вы поместите в эту док-панель последним, заполнит оставшееся пространство.
Я думаю, что вам лучше всего прочитать книгу по wpf. Это базовые вещи, и если вы этого не понимаете, вы потеряете много времени.