I'm using a DataTemplate that animates a RenderTransform to increase its size when the mouse is over it. The problem I'm having is that when the animation is in effect the enlarged list box item appears behind other items. Is there a way to control the ZIndex of the list box item from within my DataTemplate so that it's always on top of other items?
You can set the Templated Element's ZIndex from template using Triggers. Find out the templated parent control by VisualTree parsing like bellow
{RelativeSource FindAncestor,AncestorType=...
The zIndex is only available on elements hosted inside a Canvas. Therefore you may be able to wrap the whole listbox control in a canvas then set Canvas.zIndex to 99 as part of the Trigger you are using to do the transform . However I could not get this to work.
The only other option that did work is to use a LayoutTransform rather than a RenderTransform as this will move the other items out of the way as the transform is calculated before the items are placed. This would mean there would be no need to set any zIndex, however it would depend on your requirements.