Используя эту публикацию в качестве ссылки, я пытаюсь отобразить индекс элемента Listbox путем реализации присоединенного свойства. Я буду первым, кто признает, что я не совсем понимаю, как присоединенное свойство решит эту проблему, но я надеялся, что это станет ясно после успешной реализации решения. Потратив бесчисленное количество часов на решение этой проблемы, я ищу небольшую помощь, будь то через пристроенную собственность или нет. На данный момент он использует строку по умолчанию («По умолчанию»), но, похоже, не оценивает другие функции. Вот что у меня есть:
В WPF:
<TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}},
Mode=OneWay,
Path=(Silhouette_Controls_ThumbnailListbox:ListBoxItemIndex.ItemIndex)}"
TextAlignment="Center"
VerticalAlignment="Bottom"
HorizontalAlignment="Center" />
Класс свойств зависимости в C #
public class ListBoxItemIndex : DependencyObject
{
public static readonly DependencyProperty ItemIndexProperty =
DependencyProperty.RegisterAttached(
"ItemIndex",
typeof(string),
typeof(ListBoxItemIndex),
new PropertyMetadata("Default", new PropertyChangedCallback(OnItemIndexChanged)));
public static string GetItemIndex(DependencyObject element)
{
return (string)element.GetValue(ItemIndexProperty);
}
public static void SetItemIndex(DependencyObject element, string value)
{
element.SetValue(ItemIndexProperty, value);
}
private static void OnItemIndexChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
ListBoxItem item = d as ListBoxItem;
ListBox view = ItemsControl.ItemsControlFromItemContainer(item) as ListBox;
int index = view.ItemContainerGenerator.IndexFromContainer(item);
}
}