Я настраиваю имя макета ConstraintLayout в соответствии с AbsoluteLayout в MAUI.
Как и у AbsoluteLayout, есть класс LayoutManager, я переопределяю методы Measure и ArrangeChildren в этом классе.
У него также есть класс ConstrainLayout.
public class ConstraintLayout : Layout, IConstraintLayout
Исходный код на ConstraintLayout.Maui
Я печатаю управляющую информацию, найденный элемент управления в макете имеет правильное положение и размер, например, положение входа в центре окна. но ничего не видно в окне.
Мне нужно что-то установить в Builder или Handler? Я не нахожу документ об этом.





Я вижу, что AbsoluteLayout работает через LayoutManager.
Найдите AbsoluteLayout.cs. Смотрите его:
protected override ILayoutManager CreateLayoutManager()
Сделайте подобное, но найдите AbsoluteLayoutManager.cs и создайте аналогичный ConstraintLayoutManager, который использует вашу логику ограничений. Тогда ваш метод в ConstraintLayout будет:
protected override ILayoutManager CreateLayoutManager()
{
return new ConstraintLayoutManager(this);
}
ПРИМЕЧАНИЕ. Не делайте мой (теперь удаленный) комментарий ConstraintLayout : AbsoluteLayout .... Вернитесь к исходному ConstraintLayout : Layout, IConstraintLayout.
Спасибо, наконец, я обнаружил, что просто использую неисправленный метод Arrange, View наследует форму VisualElement и IView, все они имеют метод Arrange, я использую его для VisualElement, поэтому все элементы управления не отображаются.
@ToolmakerSteve Я пробовал использовать AbsoluteLayout в качестве базового класса, он показывает управление, но не очень хорошо. Он будет измерять много раз, что будет тратить много процессорного времени, а AbsoluteLayout хранит информацию о макете, но мой ConstraintLayout хранит информацию о макете, что приводит к трате памяти. Поэтому я хочу просто использовать Layout в качестве базового класса, я ищу исходный код maui, не нахожу, что обработчик принадлежит AbsoluteLayout.