Я пытаюсь создать свой собственный Panel
и реализовать свою собственную логику компоновки. Для этого я немного погуглил и прочитал несколько статей о том, как это сделать. К сожалению, все эти статьи не вдавались в подробности, поэтому я застрял с несколькими вопросами. Может быть, вы можете ответить на эти вопросы.
Итак, вот что я понял из прочитанных мною статей:
- Я создаю класс, который наследуется от
Panel
- Я переопределяю функцию
MeasureOverride
, чтобы вычислить, насколько большим я хотел бы быть, задавая один и тот же вопрос своим детям, и вычисляю свой желаемый размер по этим значениям
- Я переопределяю функцию
ArrangeOverride
любой логикой компоновки, которую я хотел бы реализовать
Но где в игру вступают Margin
, Padding
, MaxWidth
/ MaxHeight
или Width
/ Height
?
Должен ли я беспокоиться об этом или все это обрабатывается процедурами Measure
и Arrange
, которые затем вызывают мои переопределенные функции MeasureOverride
и ArrangeOverride
?
Или я должен принять во внимание эти значения при измерении себя и ограничить вычисленный размер до MaxWidth
/ MaxHeight
или добавить Margin
s к моему расчетному размеру?