Пользовательский макет MAUI не показывает никаких элементов управления, но элементы управления имеют правильное положение и размер,

Я настраиваю имя макета ConstraintLayout в соответствии с AbsoluteLayout в MAUI.

Как и у AbsoluteLayout, есть класс LayoutManager, я переопределяю методы Measure и ArrangeChildren в этом классе.

У него также есть класс ConstrainLayout. public class ConstraintLayout : Layout, IConstraintLayout

Исходный код на ConstraintLayout.Maui

Я печатаю управляющую информацию, найденный элемент управления в макете имеет правильное положение и размер, например, положение входа в центре окна. но ничего не видно в окне.

Мне нужно что-то установить в Builder или Handler? Я не нахожу документ об этом.

@ToolmakerSteve Я пробовал использовать AbsoluteLayout в качестве базового класса, он показывает управление, но не очень хорошо. Он будет измерять много раз, что будет тратить много процессорного времени, а AbsoluteLayout хранит информацию о макете, но мой ConstraintLayout хранит информацию о макете, что приводит к трате памяти. Поэтому я хочу просто использовать Layout в качестве базового класса, я ищу исходный код maui, не нахожу, что обработчик принадлежит AbsoluteLayout.

yangzhou 12.05.2022 04:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я вижу, что 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, поэтому все элементы управления не отображаются.

yangzhou 14.05.2022 07:01

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