LayoutLayout

Dieses Thema beschreibt das Layoutsystem von Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)This topic describes the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) layout system. Das Verstehen, wie und wann Layoutberechnungen auftreten, ist wichtige für die Erstellung von Benutzeroberflächen in WPFWPF.Understanding how and when layout calculations occur is essential for creating user interfaces in WPFWPF.

Dieses Thema enthält folgende Abschnitte:This topic contains the following sections:

Umgebende Felder für ElementeElement Bounding Boxes

Wenn Sie an das Layout in WPFWPF denken, ist es wichtig, die umgebenden Felder zu verstehen, die alle Elemente umschließen.When thinking about layout in WPFWPF, it is important to understand the bounding box that surrounds all elements. Jede FrameworkElement verbraucht durch das Layout System kann betrachtet werden als ein Rechteck, das in das Layout eingefügt wird.Each FrameworkElement consumed by the layout system can be thought of as a rectangle that is slotted into the layout. Die LayoutInformation Klasse gibt die Grenzen der Layout-Zuordnung ein Element bzw. das Einschubfach zurück.The LayoutInformation class returns the boundaries of an element's layout allocation, or slot. Die Größe des Rechtecks richtet sich nach der Berechnung der Bildschirmbereich verfügbar, die Größe der Einschränkungen, Layout-spezifische Eigenschaften (z. B. Rand und Abstand) und die einzelnen Verhalten des übergeordneten Elements Panel Element.The size of the rectangle is determined by calculating the available screen space, the size of any constraints, layout-specific properties (such as margin and padding), and the individual behavior of the parent Panel element. Verarbeitung dieser Daten ist das Layoutsystem berechnen, die Position aller untergeordneten Elemente eines bestimmten Panel.Processing this data, the layout system is able to calculate the position of all the children of a particular Panel. Es ist wichtig zu beachten, dass die Größe von Eigenschaften für das übergeordnete Element definiert z. B. eine Border, Einfluss auf die untergeordneten Elemente.It is important to remember that sizing characteristics defined on the parent element, such as a Border, affect its children.

Die folgende Abbildung zeigt ein einfaches Layout.The following illustration shows a simple layout.

Ein typisches Raster, ohne überlagerndes umgebendes Feld.A typical Grid, no bounding box superimposed.

Dieses Layout kann mithilfe der folgenden XAMLXAML erreicht werden.This layout can be achieved by using the following XAMLXAML.

<Grid Name="myGrid" Background="LightSteelBlue" Height="150">
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="250"/>
  </Grid.ColumnDefinitions>
  <Grid.RowDefinitions>
    <RowDefinition />
    <RowDefinition />
    <RowDefinition />
  </Grid.RowDefinitions>
  <TextBlock Name="txt1" Margin="5" FontSize="16" FontFamily="Verdana" Grid.Column="0" Grid.Row="0">Hello World!</TextBlock>
  <Button Click="getLayoutSlot1" Width="125" Height="25" Grid.Column="0" Grid.Row="1">Show Bounding Box</Button>
  <TextBlock Name="txt2" Grid.Column="1" Grid.Row="2"/>
</Grid>

Ein einzelnes TextBlock Element gehostet wird, innerhalb einer Grid.A single TextBlock element is hosted within a Grid. Während der Text nur die linke obere Ecke der ersten Spalte, für den zugeordneten Platz ausfüllt der TextBlock tatsächlich viel größer ist.While the text fills only the upper-left corner of the first column, the allocated space for the TextBlock is actually much larger. Das umgebende Feld eines beliebigen FrameworkElement kann abgerufen werden, indem die GetLayoutSlot Methode.The bounding box of any FrameworkElement can be retrieved by using the GetLayoutSlot method. Die folgende Abbildung zeigt das umgebende Feld für die TextBlock Element.The following illustration shows the bounding box for the TextBlock element.

Das umgebende Feld des TextBlocks ist jetzt sichtbar.The bounding box of the TextBlock is now visible.

Wie durch das gelbe Rechteck, den zugewiesenen Platz für die TextBlock Element tatsächlich viel größer als angezeigt wird.As shown by the yellow rectangle, the allocated space for the TextBlock element is actually much larger than it appears. Wenn zusätzliche Elemente hinzugefügt werden die Grid, Zuordnung verkleinern oder erweitern, je nach Typ und Größe der Elemente, die hinzugefügt werden konnte.As additional elements are added to the Grid, this allocation could shrink or expand, depending on the type and size of elements that are added.

Der Layout-Slot, der die TextBlock übersetzt in einer Path mithilfe der GetLayoutSlot Methode.The layout slot of the TextBlock is translated into a Path by using the GetLayoutSlot method. Diese Technik kann für das Anzeigen des umgebenden Felds eines Elements nützlich sein.This technique can be useful for displaying the bounding box of an element.

private void getLayoutSlot1(object sender, System.Windows.RoutedEventArgs e)
{
    RectangleGeometry myRectangleGeometry = new RectangleGeometry();
    myRectangleGeometry.Rect = LayoutInformation.GetLayoutSlot(txt1);
    Path myPath = new Path();
    myPath.Data = myRectangleGeometry;
    myPath.Stroke = Brushes.LightGoldenrodYellow;
    myPath.StrokeThickness = 5;
    Grid.SetColumn(myPath, 0);
    Grid.SetRow(myPath, 0);
    myGrid.Children.Add(myPath);
    txt2.Text = "LayoutSlot is equal to " + LayoutInformation.GetLayoutSlot(txt1).ToString();
}
Private Sub getLayoutSlot1(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim myRectangleGeometry As New RectangleGeometry
    myRectangleGeometry.Rect = LayoutInformation.GetLayoutSlot(txt1)
    Dim myPath As New Path
    myPath.Data = myRectangleGeometry
    myPath.Stroke = Brushes.LightGoldenrodYellow
    myPath.StrokeThickness = 5
    Grid.SetColumn(myPath, 0)
    Grid.SetRow(myPath, 0)
    myGrid.Children.Add(myPath)
    txt2.Text = "LayoutSlot is equal to " + LayoutInformation.GetLayoutSlot(txt1).ToString()
End Sub

Das LayoutsystemThe Layout System

Im einfachsten Fall ist Layout ein rekursives System, um ein Element in der Größe anzupassen, zu positionieren und zu zeichnen.At its simplest, layout is a recursive system that leads to an element being sized, positioned, and drawn. Genauer gesagt, Layout beschreibt den Prozess messen und Anordnen der Member einer Panel des Elements Children Auflistung.More specifically, layout describes the process of measuring and arranging the members of a Panel element's Children collection. Layout ist ein intensiver Vorgang.Layout is an intensive process. Je größer die Children Auflistung, je größer die Anzahl von Berechnungen, die vorgenommen werden müssen.The larger the Children collection, the greater the number of calculations that must be made. Komplexität kann auch eingeleitet werden basierend auf dem Layoutverhalten definiert, indem die Panel Element, das die Auflistung besitzt.Complexity can also be introduced based on the layout behavior defined by the Panel element that owns the collection. Ein relativ einfacher Panel, wie z. B. Canvas, können Sie deutlich bessere Leistung als komplexer Panel, wie z. B. Grid.A relatively simple Panel, such as Canvas, can have significantly better performance than a more complex Panel, such as Grid.

Jedes Mal, die ein untergeordnetes Element UIElement ändert seine Position, es wurde einen neuen Durchlauf vom Layoutsystem ausgelöst.Each time that a child UIElement changes its position, it has the potential to trigger a new pass by the layout system. Daher ist es wichtig, die Ereignisse zu verstehen, die das Layoutsystem aufrufen können, da unnötige Aufrufe zu schlechter Anwendungsleistung führen können.Therefore, it is important to understand the events that can invoke the layout system, as unnecessary invocation can lead to poor application performance. Im Folgenden wird der Prozess beschrieben, der auftritt, wenn das Layoutsystem aufgerufen wird.The following describes the process that occurs when the layout system is invoked.

  1. Ein untergeordnetes Element UIElement zuerst im Layoutprozess zunächst seine Kerneigenschaften gemessen.A child UIElement begins the layout process by first having its core properties measured.

  2. Auf definierten Größeneigenschaften FrameworkElement ausgewertet werden, z. B. Width, Height, und Margin.Sizing properties defined on FrameworkElement are evaluated, such as Width, Height, and Margin.

  3. Panel-spezifische Logik angewendet wird, wie z. B. Dock Richtung oder Stapeln Orientation.Panel-specific logic is applied, such as Dock direction or stacking Orientation.

  4. Der Inhalt wird neu angeordnet, nachdem alle untergeordneten Elemente gemessen wurden.Content is arranged after all children have been measured.

  5. Die Children Auflistung auf dem Bildschirm gezeichnet wird.The Children collection is drawn on the screen.

  6. Der Prozess wird erneut aufgerufen, wenn zusätzliche Children der Auflistung hinzugefügt werden eine LayoutTransform angewendet wird, oder die UpdateLayout -Methode aufgerufen wird.The process is invoked again if additional Children are added to the collection, a LayoutTransform is applied, or the UpdateLayout method is called.

Dieser Prozess und wie er aufgerufen wird, werden in den folgenden Abschnitten ausführlicher definiert.This process and how it is invoked are defined in more detail in the following sections.

Messen und Anordnen von untergeordneten ElementenMeasuring and Arranging Children

Das Layoutsystem führt zwei Durchläufe für jedes Mitglied der Children Sammlung, übergeben Sie ein Measure und eine anordnungsphase.The layout system completes two passes for each member of the Children collection, a measure pass and an arrange pass. Jedes untergeordnete Element Panel verfügt über ein eigenes MeasureOverride und ArrangeOverride Methoden, um einen eigenen bestimmten Layout-Verhalten zu erzielen.Each child Panel provides its own MeasureOverride and ArrangeOverride methods to achieve its own specific layout behavior.

Während des messdurchgangs jedes Mitglied der Children Auflistung ausgewertet wird.During the measure pass, each member of the Children collection is evaluated. Der Prozess beginnt mit einem Aufruf der Measure Methode.The process begins with a call to the Measure method. Diese Methode wird aufgerufen, in der Implementierung des übergeordneten Elements Panel -Element, und muss nicht explizit aufgerufen werden, für das Layout auftreten.This method is called within the implementation of the parent Panel element, and does not have to be called explicitly for layout to occur.

Erste, systemeigene Größeneigenschaften des der UIElement ausgewertet werden, z. B. Clip und Visibility.First, native size properties of the UIElement are evaluated, such as Clip and Visibility. Dies generiert einen Wert mit dem Namen constraintSize übergebene MeasureCore.This generates a value named constraintSize that is passed to MeasureCore.

Zweitens Frameworkeigenschaften, die auf definierten FrameworkElement verarbeitet werden, dies wirkt sich auf den Wert des constraintSize.Secondly, framework properties defined on FrameworkElement are processed, which affects the value of constraintSize. Diese Eigenschaften in der Regel beschreiben die Größenanpassungsmerkmale des zugrunde liegenden UIElement, z. B. seine Height, Width, Margin, und Style.These properties generally describe the sizing characteristics of the underlying UIElement, such as its Height, Width, Margin, and Style. Jede dieser Eigenschaften kann den Bereich ändern, der zum Anzeigen des Elements nötig ist.Each of these properties can change the space that is necessary to display the element. MeasureOverrideKlicken Sie dann mit aufgerufen constraintSize als Parameter.MeasureOverride is then called with constraintSize as a parameter.

Hinweis

Es gibt einen Unterschied zwischen den Eigenschaften von Height und Width und ActualHeight und ActualWidth.There is a difference between the properties of Height and Width and ActualHeight and ActualWidth. Z. B. die ActualHeight Eigenschaft ist ein berechneter Wert basierend auf andere Höheneingaben und das Layoutsystem.For example, the ActualHeight property is a calculated value based on other height inputs and the layout system. Der Wert wird vom Layoutsystem selbst, basierend auf einem tatsächlichen Renderingdurchlauf festgelegt und kann daher zurückfallen etwas der festgelegte Wert der Eigenschaften, z. B. Height, sind die Grundlage für die Eingabe ändern.The value is set by the layout system itself, based on an actual rendering pass, and may therefore lag slightly behind the set value of properties, such as Height, that are the basis of the input change.

Da ActualHeight wird ein berechneter Wert sollten Sie berücksichtigen, dass es möglicherweise mehrere oder inkrementelle gemeldet ändert, als Ergebnis verschiedener Vorgänge vom Layoutsystem.Because ActualHeight is a calculated value, you should be aware that there could be multiple or incremental reported changes to it as a result of various operations by the layout system. Das Layoutsystem berechnet möglicherweise den Bereich für untergeordnete Elemente, Einschränkungen durch übergeordnete Elemente usw.The layout system may be calculating required measure space for child elements, constraints by the parent element, and so on.

Das eigentliche Ziel von die Messphase ist für das untergeordnete Element, um zu bestimmen, die DesiredSize, Dies tritt ein, während die MeasureCore aufrufen.The ultimate goal of the measure pass is for the child to determine its DesiredSize, which occurs during the MeasureCore call. Die DesiredSize Wert gespeichert Measure für die Verwendung während der Inhalt anordnungsphase.The DesiredSize value is stored by Measure for use during the content arrange pass.

Die anordnungsphase beginnt mit einem Aufruf von der Arrange Methode.The arrange pass begins with a call to the Arrange method. Während die anordnungsphase der übergeordneten Panel Element erzeugt ein Rechteck, das die Grenzen des untergeordneten Elements darstellt.During the arrange pass, the parent Panel element generates a rectangle that represents the bounds of the child. Dieser Wert wird zum Übergeben der ArrangeCore Methode für die Verarbeitung.This value is passed to the ArrangeCore method for processing.

Die ArrangeCore Methode wertet die DesiredSize des untergeordneten Elements und wertet alle zusätzlichen Ränder, die die gerenderte Größe des Elements beeinflussen können.The ArrangeCore method evaluates the DesiredSize of the child and evaluates any additional margins that may affect the rendered size of the element. ArrangeCoregeneriert ein arrangeSize, der übergeben wird, um die ArrangeOverride Methode der Panel als Parameter.ArrangeCore generates an arrangeSize, which is passed to the ArrangeOverride method of the Panel as a parameter. ArrangeOverridegeneriert die finalSize des untergeordneten Elements.ArrangeOverride generates the finalSize of the child. Schließlich die ArrangeCore Methode führt eine endgültige Auswertung der Offset-Eigenschaften, z. B. Rand und Ausrichtung, durch und platziert das untergeordnete Element innerhalb der Layout-Slot.Finally, the ArrangeCore method does a final evaluation of offset properties, such as margin and alignment, and puts the child within its layout slot. Das untergeordnete Element muss nicht den gesamten zugewiesenen Bereich füllen (und tut dies häufig auch nicht).The child does not have to (and frequently does not) fill the entire allocated space. Steuerelement dann an das übergeordnete Element zurückgegeben wird Panel und der Layoutvorgang abgeschlossen ist.Control is then returned to the parent Panel and the layout process is complete.

Panel-Elemente und benutzerdefiniertes LayoutverhaltenPanel Elements and Custom Layout Behaviors

WPFWPFenthält eine Gruppe von Elementen, die davon Herleiten Panel. includes a group of elements that derive from Panel. Diese Panel -Elemente ermöglichen viele komplexe Layouts.These Panel elements enable many complex layouts. Beispielsweise Stapeln Elemente einfach erreichen, indem mithilfe der StackPanel Element, während mit komplexen und kostenlose fließende Layouts möglich sind eine Canvas.For example, stacking elements can easily be achieved by using the StackPanel element, while more complex and free flowing layouts are possible by using a Canvas.

Die folgende Tabelle enthält die verfügbaren Layouts Panel Elemente.The following table summarizes the available layout Panel elements.

PanelnamePanel name BeschreibungDescription
Canvas Definiert einen Bereich, in dem können Sie explizit untergeordnete Elemente durch Koordinaten relativ zum Positionieren, der Canvas Bereich.Defines an area within which you can explicitly position child elements by coordinates relative to the Canvas area.
DockPanel Definiert einen Bereich, in dem Sie untergeordnete Elemente entweder horizontal oder vertikal relativ zueinander anordnen können.Defines an area within which you can arrange child elements either horizontally or vertically, relative to each other.
Grid Definiert einen flexiblen Rasterbereich mit Spalten und Zeilen.Defines a flexible grid area that consists of columns and rows.
StackPanel Ordnet untergeordnete Elemente in einer einzelnen Zeile an, die horizontal oder vertikal ausgerichtet werden kann.Arranges child elements into a single line that can be oriented horizontally or vertically.
VirtualizingPanel Bietet ein Framework für Panel Elemente, die die Auflistung der untergeordneten Daten virtualisieren.Provides a framework for Panel elements that virtualize their child data collection. Dies ist eine abstrakte Klasse.This is an abstract class.
WrapPanel Ordnet untergeordnete Elemente nacheinander von links nach rechts und umbricht den Inhalt in die nächste Zeile am Rand des enthaltenden Felds.Positions child elements in sequential position from left to right, breaking content to the next line at the edge of the containing box. Erfolgt die nachfolgende Sortierung nacheinander von oben nach unten oder von rechts nach links, abhängig vom Wert der Orientation Eigenschaft.Subsequent ordering occurs sequentially from top to bottom or right to left, depending on the value of the Orientation property.

Für Anwendungen, die ein Layout, die nicht möglich ist erfordern mithilfe der vordefinierten Panel Elemente, benutzerdefinierte Layoutverhalten erreichen, indem Sie die Vererbung von Panel und überschreiben die MeasureOverride und ArrangeOverride Methoden.For applications that require a layout that is not possible by using any of the predefined Panel elements, custom layout behaviors can be achieved by inheriting from Panel and overriding the MeasureOverride and ArrangeOverride methods. Ein Beispiel finden Sie unter Custom Radial Panel Sample (Beispiel des benutzerdefinierten radialen Panels).For an example, see Custom Radial Panel Sample.

Überlegungen zur LayoutleistungLayout Performance Considerations

Layout ist ein rekursiver Prozess.Layout is a recursive process. Jedes untergeordnete Element in einem Children Auflistung bei jedem Aufruf der Layoutsystem verarbeitet wird.Each child element in a Children collection gets processed during each invocation of the layout system. Daher sollte das Auslösen des Layoutsystems vermieden werden, wenn es nicht erforderlich ist.As a result, triggering the layout system should be avoided when it is not necessary. Folgendes können Sie für eine bessere Leistung tun.The following considerations can help you achieve better performance.

  • Achten Sie darauf, welche Änderungen des Eigenschaftswerts ein rekursives Update durch das Layoutsystem erzwingt.Be aware of which property value changes will force a recursive update by the layout system.

    Abhängigkeitseigenschaften, deren Werte bewirken, dass das Layoutsystem initialisiert werden kann, werden mit öffentlichen Flags gekennzeichnet.Dependency properties whose values can cause the layout system to be initialized are marked with public flags. AffectsMeasureund AffectsArrange nützliche Hinweise, welche Eigenschaft ändert einen rekursiven erzwingt, aktualisieren, indem Sie das Layoutsystem bereitzustellen.AffectsMeasure and AffectsArrange provide useful clues as to which property value changes will force a recursive update by the layout system. Im Allgemeinen müssen eine Eigenschaft, die die Größe des umgebenden Felds eines Elements beeinflussen können eine AffectsMeasure -flag auf "true" festgelegt.In general, any property that can affect the size of an element's bounding box should have a AffectsMeasure flag set to true. Weitere Informationen finden Sie unter Übersicht über Abhängigkeitseigenschaften.For more information, see Dependency Properties Overview.

  • Verwenden Sie nach Möglichkeit eine RenderTransform anstelle von einer LayoutTransform.When possible, use a RenderTransform instead of a LayoutTransform.

    Ein LayoutTransform kann eine sehr gute Möglichkeit, den Inhalt der Auswirkungen auf eine Benutzeroberfläche (User Interface, UI)user interface (UI).A LayoutTransform can be a very useful way to affect the content of a Benutzeroberfläche (User Interface, UI)user interface (UI). Allerdings verfügt die Auswirkung der Transformation nicht auf die Position von anderen Elementen auswirken, ist es am besten geeignet, eine RenderTransform stattdessen, da RenderTransform das Layoutsystem wird nicht aufgerufen.However, if the effect of the transform does not have to impact the position of other elements, it is best to use a RenderTransform instead, because RenderTransform does not invoke the layout system. LayoutTransformWendet die Transformation, und erzwingt, dass eine rekursive layoutaktualisierung auszuführen, um die neue Position des betroffenen Element zu berücksichtigen.LayoutTransform applies its transformation and forces a recursive layout update to account for the new position of the affected element.

  • Vermeiden Sie unnötige Aufrufe UpdateLayout.Avoid unnecessary calls to UpdateLayout.

    Die UpdateLayout Methode erzwingt eine rekursive layoutaktualisierung auszuführen, und ist häufig nicht erforderlich.The UpdateLayout method forces a recursive layout update, and is frequently not necessary. Wenn Sie sicher sind, dass eine vollständige Aktualisierung erforderlich ist, verlassen Sie sich auf das Layoutsystem, das diese Methode für Sie aufruft.Unless you are sure that a full update is required, rely on the layout system to call this method for you.

  • Bei der Arbeit mit einer großen Children -Auflistung, erwägen Sie eine VirtualizingStackPanel statt einer regulären StackPanel.When working with a large Children collection, consider using a VirtualizingStackPanel instead of a regular StackPanel.

    Durch die untergeordnete Auflistung virtualisiert die VirtualizingStackPanel behält nur Objekte im Arbeitsspeicher, die zurzeit im ViewPort des übergeordneten Elements enthalten sind.By virtualizing the child collection, the VirtualizingStackPanel only keeps objects in memory that are currently within the parent's ViewPort. Daher wird die Leistung in den meisten Szenarios erheblich verbessert.As a result, performance is substantially improved in most scenarios.

Subpixel-Rendering und LayoutglättungSub-pixel Rendering and Layout Rounding

Das WPFWPF-Grafiksystem verwendet geräteunabhängige Einheiten, um die Unabhängigkeit von der Auflösung und vom Gerät zu aktivieren.The WPFWPF graphics system uses device-independent units to enable resolution and device independence. Jedes geräteunabhängige Pixel skaliert automatisch mit der Punkte pro Zoll (dots per inch, dpi)dots per inch (dpi)-Einstellung des Systems.Each device independent pixel automatically scales with the system's Punkte pro Zoll (dots per inch, dpi)dots per inch (dpi) setting. Dadurch wird die ordnungsgemäße Skalierung von WPFWPF-Anwendungen für unterschiedliche dpidpi-Einstellungen bereitgestellt, und die Anwendung ist automatisch bereit für dpidpi.This provides WPFWPF applications proper scaling for different dpidpi settings and makes the application automatically dpidpi-aware.

Jedoch kann diese dpidpi-Unabhängigkeit unregelmäßiges Edge-Rendering aufgrund von Antialiasing hervorrufen.However, this dpidpi independence can create irregular edge rendering because of anti-aliasing. Diese Artefakte, in der Regel verschwommene oder semitransparente Ränder, können auftreten, wenn die Position eines Rands in die Mitte eines Gerätepixels anstatt zwischen die Gerätepixel fällt.These artifacts, typically seen as blurry or semi-transparent edges, can occur when the location of an edge falls in the middle of a device pixel instead of between device pixels. Das Layoutsystem bietet eine Möglichkeit, dafür eine Anpassung durch Layoutglättung vorzunehmen.The layout system provides a way to adjust for this with layout rounding. Die Layoutglättung wird verwendet, wo Layoutsysteme nicht-integrale Pixelwerte während des Layoutdurchlaufs glättet.Layout rounding is where the layout system rounds any non-integral pixel values during the layout pass.

Die Layoutglättung ist standardmäßig deaktiviert.Layout rounding is disabled by default. Legen Sie zum Aktivieren der layoutglättung der UseLayoutRounding Eigenschaft true für ein beliebiges FrameworkElement.To enable layout rounding, set the UseLayoutRounding property to true on any FrameworkElement. Da es sich um eine Abhängigkeitseigenschaft handelt, wird der Wert an alle untergeordneten Elemente in der visuellen Struktur weitergegeben.Because it is a dependency property, the value will propagate to all the children in the visual tree. Legen Sie zum Aktivieren der layoutglättung für die gesamte Benutzeroberfläche UseLayoutRounding auf true auf den Stammcontainer.To enable layout rounding for the entire UI, set UseLayoutRounding to true on the root container. Ein Beispiel finden Sie unter UseLayoutRounding.For an example, see UseLayoutRounding.

Weitere InformationenWhat's Next

Das Verstehen, wie Elemente gemessen und angeordnet werden, ist der erste Schritt zum Verstehen von Layout.Understanding how elements are measured and arranged is the first step in understanding layout. Weitere Informationen zu den verfügbaren Panel Elemente finden Sie unter Panels Overview.For more information about the available Panel elements, see Panels Overview. Weitere Informationen über die verschiedenen Positionierungseigenschaften, die Layout beeinflussen können, finden Sie unter Übersicht über Alignment, Margin und Padding.To better understand the various positioning properties that can affect layout, see Alignment, Margins, and Padding Overview. Ein Beispiel eines benutzerdefinierten Panel Element finden Sie unter benutzerdefinierte radiale Bereichsbeispiel.For an example of a custom Panel element, see Custom Radial Panel Sample. Wenn Sie alle in einer Lightweight-Anwendung entwickeln möchten, finden Sie unter Exemplarische Vorgehensweise: Meine erste WPF-Desktopanwendung.When you are ready to put it all together in a light-weight application, see Walkthrough: My first WPF desktop application.

Siehe auchSee Also

FrameworkElement
UIElement
Übersicht über Panel-ElementePanels Overview
Übersicht über Alignment, Margin und PaddingAlignment, Margins, and Padding Overview
Layout und EntwurfLayout and Design