Нет свойства Index
, но в любом случае "-Index" не будет допустимым путем ... вам все равно понадобится конвертер для отрицания значения. Итак, что вы можете сделать, это создать конвертер, который извлекает индекс из ItemContainerGenerator
public class ItemContainerToZIndexConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var itemContainer = (DependencyObject)value;
var itemsControl = FindAncestor<ItemsControl>(itemContainer);
int index = itemsControl.ItemContainerGenerator.IndexFromContainer(itemContainer);
return -index;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
public static T FindAncestor<T>(this DependencyObject obj) where T : DependencyObject
{
var tmp = VisualTreeHelper.GetParent(obj);
while (tmp != null && !(tmp is T))
{
tmp = VisualTreeHelper.GetParent(tmp);
}
return (T)tmp;
}
}
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Panel.ZIndex"
Value="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource zIndexConverter}}" />
<!-- ... -->