UIElement.UpdateLayout Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
public:
virtual void UpdateLayout() = UpdateLayout;
void UpdateLayout();
public void UpdateLayout();
function updateLayout()
Public Sub UpdateLayout ()
Комментарии
UpdateLayout в основном эквивалентен вызову InvalidateMeasure и InvalidateArrange в последовательности.
Обновления макета могут быть вынуждены кодом приложения, а не полагаться на встроенное поведение системы макета с помощью метода UpdateLayout. Однако это обычно не рекомендуется. Обычно это ненужно и может привести к плохой производительности при чрезмерном выполнении. Во многих ситуациях, когда вызов UpdateLayout из кода приложения может быть подходящим из-за изменений свойств, система макета, вероятно, уже будет обрабатывать обновления. Система макета также имеет оптимизацию для работы с каскадами изменений макета с помощью отношений "родительский-дочерний", а вызов UpdateLayout может работать с такими оптимизациями. Тем не менее, возможно, что ситуации макета существуют в более сложных сценариях, где вызов UpdateLayout является лучшим вариантом для устранения проблемы с временем или другой проблемы с макетом. Просто используйте его намеренно и экономно. В случаях, когда вам нужно вызвать UpdateLayout, вероятно, нужно вызвать его сразу после вызова Children.Add некоторых дочерних элементов общего родительского макета, а затем вызова UpdateLayout в этом родительском элементе, чтобы система макета распознала новый добавленный дочерний элемент.
Один из сценариев UpdateLayout заключается в том, что у вас есть связанные контейнеры, такие как RichTextBlock и RichTextBlockOverflow, вы внесли изменения во время выполнения в содержимое, и вы хотите убедиться, что операции, не связанные с отображением пользовательского интерфейса, имеют возможность запустить макет и активировать перебалансирование содержимого между связанными контейнерами. Например, это можно сделать для подготовки макета для печати. Пример этого сценария см. в сценарии #5 в примере печати.
Tip
Если у вас есть сценарий, в котором вы используете привязку данных к пользовательскому интерфейсу, и вы не видите обновления макета в коллекциях источников данных, вызов UpdateLayout, вероятно, не поможет. Скорее всего, у вас возникли проблемы с объявлениями привязки, контекстом данных или поддержкой INotifyPropertyChanged или INotifyCollectionChanged в источнике данных.