# ListBox Features

## Content



The following features are available with the [C1ListBox](/componentone/api/wpf/online-basiclibrary/dotnet-framework-api/C1.WPF.4.6.2/C1.WPF.C1ListBox.html) control:

### Optical Zoom

The **ListBox for WPF and Silverlight** controls support optical zoom functionality so users can manipulate the size of the items intuitively through pinch gestures. The zooming transformation is smooth and fluid so the performance of your application is not sacrificed.

You can customize the zoom using the **ZoomMode** and **Zoom** properties. The **ZoomMode** property gets or sets whether the zoom is enabled or disabled. The **Zoom** property gets the Zoom value applied to the control. The **ZoomChanged** event is triggered when the zoom value of the control is changed.

### Orientation

The **ListBox** controls support both horizontal and vertical orientation, allowing for more layout scenarios. To set the orientation of the control, set the **Orientation** property to **Horizontal** or **Vertical**.

### Preview State

In order to have the highest performance imaginable, the **ListBox** controls can render items outside the viewport in a preview state. Like the standard **ItemTemplate**, the **Preview** template defines the appearance of items when they are in a preview state, such as zoomed out or during fast scroll. The controls will then switch to the full item template when the items have stopped scrolling or zooming.

### UI Virtualization

The **ListBox** controls support UI virtualization so they are blazing-fast while able to display thousands of items with virtually no loss of performance. You can determine how many items are rendered in each layout pass by setting the **ViewportGap** and **ViewportPreviewGap** properties. These properties can be adjusted depending on the scenario.

The **ViewportGap** property gets or sets a coefficient which will determine in each layout pass the size of the viewport. If zero is specified the size of the viewport will be equal to the scrollviewer viewport. If 0.5 is specified the size of the viewport will be enlarged to take up half screen more at both sides of the original viewport.

The **ViewportPreviewGap** property gets or sets a coefficient which will determine in each layout pass the size of the viewport to render items in preview mode.