Система компоновки в WPF

#wpf #layout #measureoverride

#wpf #компоновка #measureoverride

Вопрос:

Я хочу инициировать измерение / упорядочивание компоновки ItemsControl вручную в коде без взаимодействия с пользователем. Возможно ли это? Если да, то каким образом? Я пытался InvalidateMeasure() , UpdateLayout() , но без толку.

Комментарии:

1. В чем ваша реальная проблема? Зачем вам нужно запускать управление компоновкой?

Ответ №1:

Используйте InvalidateVisual метод для вызова повторного рендеринга:

Делает недействительным рендеринг элемента и принудительно выполняет полный новый проход компоновки. OnRender вызывается после завершения цикла компоновки.

Однако, поскольку Microsoft рекомендует, чтобы это едва ли использовалось вручную в приложениях, вероятно, существует другое решение вашей проблемы (например, правильное использование свойств зависимостей, например), если бы мы это знали.

Комментарии:

1. Даже это не работает. Где вызвать этот метод? Из ItemsControl или из ItemsPanel?

2. Пожалуйста, определите «не работает». Что происходит? Чего не происходит? Что вы ожидаете, что произойдет?

3. У меня есть точка останова при переопределении меры ItemsPanel моего элемента управления (скажем, моей пользовательской панели). И я пробую методы, как вы сказали, как в ItemsControl, так и в ItemsPanel. Но точка останова не достигается.