FrameworkElement.LayoutUpdated Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит при изменении макета визуального дерева из-за изменения значения свойств, относящихся к макету, или другого действия, которое обновляет макет.
// Register
event_token LayoutUpdated(EventHandler<IInspectable> const& handler) const;
// Revoke with event_token
void LayoutUpdated(event_token const* cookie) const;
// Revoke with event_revoker
FrameworkElement::LayoutUpdated_revoker LayoutUpdated(auto_revoke_t, EventHandler<IInspectable> const& handler) const;
public event System.EventHandler<object> LayoutUpdated;
function onLayoutUpdated(eventArgs) { /* Your code */ }
frameworkElement.addEventListener("layoutupdated", onLayoutUpdated);
frameworkElement.removeEventListener("layoutupdated", onLayoutUpdated);
- or -
frameworkElement.onlayoutupdated = onLayoutUpdated;
Public Custom Event LayoutUpdated As EventHandler(Of Object)
<frameworkElement LayoutUpdated="eventhandler"/>
Тип события
Комментарии
LayoutUpdated — это последнее событие времени существования объекта, которое происходит в последовательности загрузки XAML до того, как элемент управления будет готов к взаимодействию. Однако LayoutUpdated также может возникать во время выполнения в течение времени существования объекта по ряду причин: изменение свойства, изменение размера окна или запрос макета среды выполнения (UpdateLayout или измененный шаблон элемента управления). Событие LayoutUpdated запускается после возникновения всех событий SizeChanged в последовательности макета.
LayoutUpdated может возникать, когда объект, к которому присоединен обработчик, не обязательно изменяет ничего в визуальном дереве под ним. Например, представьте контейнер макета, в котором есть два дочерних элемента, совместно использующие пространство. Если первый объект изменяет свойство, которое принудительно создает новый макет, оба объекта запускают LayoutUpdated, так как второй объект может быть изменен, даже если его собственный дочерний макет не изменяется.
При обработке LayoutUpdated не следует полагаться на значение отправителя . Для LayoutUpdated отправитель всегда имеет значение NULL, независимо от места присоединения обработчика. Это необходимо, чтобы обработчики не присвоили отправителю какое-либо значение, например, подразумевая, что именно этот элемент активировал событие из визуального дерева. LayoutUpdated подразумевает, что что-то в общем визуальном дереве изменилось, и каждый конкретный объект в любом месте дерева имеет возможность обрабатывать это событие. Если вы знакомы с проектированием API отрисовки более низкого уровня, вы можете приравнивать layoutUpdated к запуску аналогично флагу "требуется перерисовка", который устанавливается как часть управляемой объектом логики отрисовки в режиме сохранения.
Так как LayoutUpdated срабатывает во многих случаях и не всегда зависит от объекта, который фактически меняется, подумайте, подходит ли обработка события SizeChanged для вашего сценария.
Работа в Windows 8
В Windows 8 возникла проблема с отслеживанием нескольких прослушивателей для этого события. Если у вас есть несколько прослушивателей или обработчиков для события, попытка удалить один из них приведет к удалению всех из них. Проблема устранена, начиная с Windows 8.1. При удалении обработчиков событий с помощью синтаксиса -=
за раз удаляется только один прослушиватель. Большинство кода не требует изменений или проверок поведения, так как работа с несколькими прослушивателями для каждого события является необычным сценарием.
Приложения, которые скомпилированы для Windows 8, но выполняются в Windows 8.1, продолжают использовать правила, действующие в Windows 8.