Пользовательская панель: откуда вступают Margins и MaxSizes? - PullRequest
0 голосов
/ 15 июня 2019

Я пытаюсь создать свой собственный Panel и реализовать свою собственную логику компоновки. Для этого я немного погуглил и прочитал несколько статей о том, как это сделать. К сожалению, все эти статьи не вдавались в подробности, поэтому я застрял с несколькими вопросами. Может быть, вы можете ответить на эти вопросы.

Итак, вот что я понял из прочитанных мною статей:

  • Я создаю класс, который наследуется от Panel
  • Я переопределяю функцию MeasureOverride, чтобы вычислить, насколько большим я хотел бы быть, задавая один и тот же вопрос своим детям, и вычисляю свой желаемый размер по этим значениям
  • Я переопределяю функцию ArrangeOverride любой логикой компоновки, которую я хотел бы реализовать

Но где в игру вступают Margin, Padding, MaxWidth / MaxHeight или Width / Height?

Должен ли я беспокоиться об этом или все это обрабатывается процедурами Measure и Arrange, которые затем вызывают мои переопределенные функции MeasureOverride и ArrangeOverride?

Или я должен принять во внимание эти значения при измерении себя и ограничить вычисленный размер до MaxWidth / MaxHeight или добавить Margin s к моему расчетному размеру?

...