[WPF] Binding к позиции элемента
От: WSN Россия  
Дата: 09.03.10 10:25
Оценка:
Здарвствуйте!

Предположим есть шаблон, который отображает коллекцию объектов в ListBox.
Как переопределить шаблон ListBoxItem, чтобы было чтото типа:

<StackPanel Orientation="Horizontal">
<Label Content="{Binding Хочу чтобы здесь была позиция элемента в листбоксе}"/>
<Label Content={Binding Title}/>
</StackPanel>


Ну вообщем чтобы получилось что-то такое:

1Яблоко
2ГрушаКакаято
3Дынька
...
10Арбузик


С уважением, Иван
Re: [WPF] Binding к позиции элемента
От: Codechanger Россия  
Дата: 09.03.10 10:38
Оценка:
Здравствуйте, WSN, Вы писали:

WSN>Здарвствуйте!


WSN>Предположим есть шаблон, который отображает коллекцию объектов в ListBox.

WSN>Как переопределить шаблон ListBoxItem, чтобы было чтото типа:

WSN>
WSN><StackPanel Orientation="Horizontal">
WSN><Label Content="{Binding Хочу чтобы здесь была позиция элемента в листбоксе}"/>
WSN><Label Content={Binding Title}/>
WSN></StackPanel>
WSN>


WSN>Ну вообщем чтобы получилось что-то такое:


WSN>
WSN>1Яблоко
WSN>2ГрушаКакаято
WSN>3Дынька
WSN>...
WSN>10Арбузик
WSN>


WSN>С уважением, Иван


Только с использованием конвертеров получится.
Re[2]: [WPF] Binding к позиции элемента
От: WSN Россия  
Дата: 09.03.10 10:42
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>Только с использованием конвертеров получится.


А что на что конвертировать и что в конвертор в качестве исходных данных для конвертации передавать?
Re[3]: [WPF] Binding к позиции элемента
От: Codechanger Россия  
Дата: 09.03.10 10:57
Оценка:
Здравствуйте, WSN, Вы писали:

WSN>Здравствуйте, Codechanger, Вы писали:


C>>Только с использованием конвертеров получится.


WSN>А что на что конвертировать и что в конвертор в качестве исходных данных для конвертации передавать?


Исходные данные — текущий ListBoxItem.

А дальше как-то так:

 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            ListBoxItem item = (ListBoxItem)value;
            ListBox listBox =
                ItemsControl.ItemsControlFromItemContainer(item) as ListBox;
            // Get the index of a ListViewItem
            int index =
                listView.ItemContainerGenerator.IndexFromContainer(item);
            return index;
        }
Re[4]: [WPF] Binding к позиции элемента
От: WSN Россия  
Дата: 09.03.10 11:34
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>Здравствуйте, WSN, Вы писали:


WSN>>Здравствуйте, Codechanger, Вы писали:


C>>>Только с использованием конвертеров получится.


WSN>>А что на что конвертировать и что в конвертор в качестве исходных данных для конвертации передавать?


C>Исходные данные — текущий ListBoxItem.


C>А дальше как-то так:


C>
C> public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
C>        {
C>            ListBoxItem item = (ListBoxItem)value;
C>            ListBox listBox =
C>                ItemsControl.ItemsControlFromItemContainer(item) as ListBox;
C>            // Get the index of a ListViewItem
C>            int index =
C>                listView.ItemContainerGenerator.IndexFromContainer(item);
C>            return index;
C>        }
C>


Пасиб, попробую.
Re: [WPF] Binding к позиции элемента
От: Zontin  
Дата: 14.03.10 11:27
Оценка:
Здравствуйте, WSN, Вы писали:

WSN><Label Content="{Binding Хочу чтобы здесь была позиция элемента в листбоксе}"/>


<Label Content="{Binding ElementName=listBoxName, Path=SelectedIndex}"/>


Но нумерация будет с 0. Если нужно с 1, то необходимо добавить конвертер. Но в этом случае он будет тривиальным:

...
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
    return (int)value + 1;
}
...
Re[2]: [WPF] Binding к позиции элемента
От: Sinix  
Дата: 14.03.10 12:17
Оценка:
Здравствуйте, Zontin, Вы писали:

ТС вроде просил нумерованный список, а не индекс текущего.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.