FrameworkElement.LayoutUpdated Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt auf, wenn sich das Layout der visuellen Struktur ändert, weil layoutrelevante Eigenschaften den Wert ändern oder eine andere Aktion, die das Layout aktualisiert.
// 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"/>
Ereignistyp
Hinweise
LayoutUpdated ist das letzte Objektlebensdauerereignis, das in der XAML-Ladesequenz auftritt, bevor ein Steuerelement für die Interaktion bereit ist. LayoutUpdated kann jedoch auch zur Laufzeit während der Objektlebensdauer auftreten, z. B. aus einer Eigenschaftsänderung, einer Fenstergröße oder einer Laufzeitlayoutanforderung (UpdateLayout oder einer geänderten Steuerelementvorlage). Das LayoutUpdated-Ereignis wird ausgelöst, nachdem alle SizeChanged-Ereignisse in einer Layoutsequenz aufgetreten sind.
LayoutUpdated kann auftreten, wenn das Objekt, in dem der Handler angefügt ist, in der visuellen Struktur darunter nichts ändert. Stellen Sie sich für instance einen Layoutcontainer vor, in dem zwei untergeordnete Elemente Den Raum gemeinsam nutzen. Wenn das erste Objekt eine Eigenschaft ändert, die ein neues Layout erzwingt, lösen beide Objekte LayoutUpdated aus, da das zweite Objekt möglicherweise neu positioniert wird, auch wenn sich das eigene untergeordnete Layout nicht ändert.
Wenn Sie LayoutUpdated behandeln, verlassen Sie sich nicht auf den Absenderwert . Für LayoutUpdated ist der Absender immer NULL, unabhängig davon, wo der Handler angefügt ist. Dies soll verhindern, dass Handler dem Absender irgendeine Bedeutung zuweisen, z. B. impliziert, dass es das spezifische Element war, das das Ereignis aus der visuellen Struktur ausgelöst hat. LayoutUpdated impliziert, dass sich etwas in der gesamten visuellen Struktur geändert hat, und jedes bestimmte Objekt an einer beliebigen Stelle in der Struktur die Möglichkeit hat, dieses Vorkommen zu behandeln. Wenn Sie mit dem Entwurf der Render-API auf niedrigerer Ebene vertraut sind, können Sie das Auslösen von LayoutUpdated als ähnlich dem Flag "Redraw needed" gleichsetzen, das als Teil einer objektgesteuerten Renderinglogik im beibehaltenen Modus festgelegt wird.
Da LayoutUpdated unter vielen Umständen ausgelöst wird und nicht immer spezifisch für ein Objekt ist, das sich tatsächlich ändert, sollten Sie überlegen, ob die Behandlung des SizeChanged-Ereignisses für Ihr Szenario besser geeignet ist.
Windows 8-Verhaltensweise
Windows 8 hatte ein Problem beim Nachverfolgen mehrerer Listener für dieses Ereignis. Wenn Sie über mehrere Listener/Handler für das Ereignis verfügen, würde der Versuch, einen davon zu entfernen, dazu führen, dass sie alle entfernt werden. Das Problem wird ab Windows 8.1 behoben. Wenn Ereignishandler mithilfe der -=
Syntax entfernt werden, wird jeweils nur ein Listener gleichzeitig entfernt. Der meiste Code benötigt keine Änderungen oder Verhaltensprüfungen, da der Umgang mit mehreren Listenern pro Ereignis ein ungewöhnliches Szenario ist.
Apps, die für Windows 8 kompiliert wurden, aber unter Windows 8.1 ausgeführt werden, weisen weiterhin das Windows 8-Verhalten auf.