Есть ли панель, которую я могу использовать в WPF, которая "победит" SizeToContent?
Я в основном хочу, чтобы определенные части моего окна не влияли на SizeToContent (такие как строка заголовка), чтобы он не имел размера и разрушался. Есть ли панель, которую я могу использовать для этого (например, ScrollViewer?) Или я должен написать свою собственную?
1 ответ
Решение
Вам нужен элемент управления, который будет возвращать (0,0) из MeasureOverride. Canvas сделает это, но может не иметь другого поведения, которое вы хотите. Вы также можете создать подкласс существующей панели, такой как Grid, и просто вернуть пустой размер:
public class ZeroGrid
: Grid
{
protected override Size MeasureOverride(Size constraint)
{
base.MeasureOverride(constraint);
return new Size();
}
}
Это будет вести себя как Grid, поэтому его содержимое будет растягиваться до фактического размера, но всегда будет иметь нулевой DesiredSize, поэтому это не повлияет на SizeToContent.