In This Article

AnimatedWrapPanel

This panel allows child elements to be positioned in sequential order, either horizontally or vertically, breaking content to the next row or column at the edge of the containing box. Subsequent ordering happens sequentially from top to bottom or from right to left, depending on the orientation.

Screenshot

Note

This panel can be used as a drop-in replacement for the native WPF WrapPanel panel.

Overview

Child elements are positioned or "stacked" based on the order that the elements were added to the panel, or more specifically, their position in the Children collection. Elements can be stacked either vertically or horizontally, which is determined by the AnimatedWrapPanel.Orientation property.

ScreenshotScreenshot

AnimatedWrapPanel with the elements stacked horizontally (left) and vertically (right)

Item Size

Elements will be given as much, or as little, space as they request during the measure phase. The height and/or width of the elements can be fixed using the AnimatedWrapPanel.ItemHeight and/or AnimatedWrapPanel.ItemWidth properties. When one or both of these properties are set to a valid number, then the elements will be restricted to the specified size.

Empty Space

By default, elements will be stacked next to each other and wrap to the next row/column when needed. This can leave a lot of extra space in each row/column. The AnimatedWrapPanel can be configured to evenly distribute the empty space along the oriented axis.

By setting the AnimatedWrapPanel.IsEmptySpaceEvenlyDistributed property to true, the space will be divided up evenly between the items.

Screenshot

AnimatedWrapPanel with the elements stacked horizontally and evenly spaced

Use in ScrollViewer

If an AnimatedWrapPanel is used in a ScrollViewer, which typically includes ListBox and other ItemsControl-derived controls, then special consideration is needed. Scrolling needs to be disabled in the same orientation as the AnimatedWrapPanel. Otherwise, the ScrollViewer will give the AnimatedWrapPanel unlimited space in which to arrange its children, which effectively disables the "wrapping" feature.

To disabled scrolling, the ScrollViewer.HorizontalScrollBarVisibility or ScrollViewer.VerticalScrollBarVisibility property can be set to Disabled. When using a ListBox, the scrollbar visibility properties can be set directly on the ListBox, as it's an attached property.

Getting Started with AnimatedWrapPanel

This code shows typical XAML code used to position elements in an AnimatedWrapPanel:

xmlns:views="http://schemas.actiprosoftware.com/winfx/xaml/views"
...
<views:AnimatedWrapPanel Orientation="Horizontal">
	<Button Content="One" \>
	<!-- Positioned to the right or below the button above, depending on the width of the panel. -->
	<Button Content="Two" \>
</views:AnimatedWrapPanel>

Important Members

The following AnimatedWrapPanel members are key to its use:

Member Description
IsEmptySpaceEvenlyDistributed Property Gets or sets a value indicating whether any empty space in a row/column will be evenly distributed around the elements.
ItemHeight Property Gets or sets a value that specifies the height of all items.
ItemWidth Property Gets or sets a value that specifies the width of all items.
Orientation Property Gets or sets the orientation that the child elements are arranged.