This project contains a collection of behaviors, controls and extensions for use with a PathListBox control in Expression Blend.


This behavior provides smooth scrolling for your PathListBox. It exposes three commands that apply a smooth scroll while changing the StartItemIndex of a PathListBox control.
You can either scroll a certain number of items with the Increment and Decrement commands or you can scroll the selected item to a relative position on your path with the ScrollSelected command.


Gets a command that increments the StartItemIndex by Amount.

Gets a command that decrements the StartItemIndex by Amount.

Gets a command that scrolls the selected item to the same position as the item that is closest to the DesiredOffset.


Gets or sets the amount to increment or decrement the StartItemIndex.

Gets or sets the duration of the scroll.

Gets or sets the easing function to use when scrolling.

Gets or sets the offset from 0 to 1 along the layout paths associated with this PathListBox to scroll the selected item.

Gets or sets whether to hide the item that will be newly arranged on the path when the StartItemIndex is changed. Use this when scrolling on an open path.


This is a custom content control that allows you to modify the opacity, scale and rotation of a PathListBoxItem based where it is positioned on the layout path of the PathListBox. Set the ScaleRange, OpacityRange and AngleRange to the minimum and maximum values you would like applied. The final values are adjusted based on the settings of the Ease property, Shift and IsCentered properties. If Ease is set to “None”, a linear interpolation is used. To adjust where the effective start and end occurs along the path, adjust the Shift property. Enabling the IsCentered property will adjust the offset evenly from the middle of the path as shown in the example above. If your PathListBox has multiple LayoutPaths assigned you can enable the UseGlobalOffset property to indicate that the values should be computed across all paths instead of per individual path.


Gets or sets the range of values to use for the opacity.

Gets or sets the range of values to use for the scale.

Gets or sets the range of angle values to add to the rotation.

Gets or sets the easing function that is used to adjust the offset.

Gets or sets the amount to shift the offset from the beginning of the path.

Gets or sets whether to adjust the offset evenly from the center of the path.

Gets or sets whether to use adjust the offset across all paths by using the GlobalOffset instead of LocalOffset as the starting offset for the item.


This converter can be used to data bind the AdjustedOffset property of a PathListItemTransformer to the Radius value for a Blur effect. The parameter can be used as a scaling factor to control the maximum level of blur. This is the value computed from the offset adjusted by the IsCentered, Ease and Shift properties. In the carousel example above it is used as the converter for data binding the Radius property of a Blur Effect on the ContentPresenter in the ItemContainerStyle of the PathListBox.


This class exposes several extension methods to a PathListBox control.

int GetItemsArrangedCount(int layoutPathIndex)
Determines the number of items currently arranged on the specified layout path.

int GetFirstArrangedIndex(int layoutPathIndex)

Finds the item that is laid out at the beginning of the specified layout path.

int GetLastArrangedIndex(int layoutPathIndex)

Finds the item that is laid out at the end of the specified layout path.

Last edited Jun 7, 2010 at 3:08 AM by joamason, version 5


No comments yet.