Переопределить меру / упорядочить скрывает кнопку управления
У меня есть следующее
public class MatrixButton : Button
{
public MatrixButton()
{
Height = 20;
Width = 44;
Content = "foo";
}
protected override Size MeasureOverride(Size constraint)
{
var measureOverride = new Size(44, 20);
return measureOverride;
}
protected override Size ArrangeOverride(Size arrangeBounds)
{
var arrangeOverride = new Size(44, 20);
return arrangeOverride;
}
}
Теперь я помещаю эту кнопку просто в пустое окно, вот так:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Content = new MatrixButton();
}
}
Почему-то эта кнопка не видна в окне. Кто-нибудь знает почему? Если я удаляю переопределения, кнопка отображается правильно конечно...
редактировать: причина в том, что кнопка встроена в сложный макет, где их много и проход макета занимает много времени, но размер кнопки всегда будет одинаковым
1 ответ
Решение
Даже если вы хотите ограничить размер, вы все равно должны вызывать базовые методы для дочерних элементов Button
быть измеренным и устроенным как ожидалось:
protected override Size MeasureOverride(Size constraint)
{
var measureOverride = new Size(44, 20);
base.MeasureOverride(measureOverride);
return measureOverride;
}
protected override Size ArrangeOverride(Size arrangeBounds)
{
var arrangeOverride = new Size(44, 20);
base.ArrangeOverride(arrangeOverride);
return arrangeOverride;
}