Laden...

Listbox, Index des Eintrages in Datatemplate

Erstellt von jogibear9988 vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.292 Views
J
jogibear9988 Themenstarter:in
641 Beiträge seit 2007
vor 13 Jahren
Listbox, Index des Eintrages in Datatemplate

Gibt es irgendeine einfache Möglichkeit in einem Datatemplate den Index des aktuellen ListBox Eintrages zu ermitteln, so das man diesen mit darstellen kann?

cSharp Projekte : https://github.com/jogibear9988

U
1.578 Beiträge seit 2009
vor 13 Jahren

Nicht direkt nein, aber über ein Converter

z.B.:

public class ItemLineNumbersConverter : IValueConverter
{
	public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
	{
		var item = value as ListBoxItem;
		var view = (ListBox)ItemsControl.ItemsControlFromItemContainer(item);
		return view.ItemContainerGenerator.IndexFromContainer(item) + 1;
	}

	public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
	{
		throw new NotImplementedException();
	}
}

<UserControl.Resources>
	<Pages:ItemLineNumbersConverter x:Key="ItemLineNumbersConverter" />
</UserControl.Resources>

<ListBox ItemsSource="{Binding Items}">
	<ListBox.ItemTemplate>
		<DataTemplate>
			<StackPanel Orientation="Horizontal">
				<TextBlock FontStyle="Italic" Foreground="Gray" Text="{Binding Converter={StaticResource ItemLineNumbersConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" Margin="0,0,10,0" />
				<TextBlock Text="{Binding Name}" />
			</StackPanel>
		</DataTemplate>
	</ListBox.ItemTemplate>
</ListBox>
1.044 Beiträge seit 2008
vor 13 Jahren

Hallo jogibear9988,

meinst du sowas?

zero_x

U
1.578 Beiträge seit 2009
vor 13 Jahren

Nein das meint er nicht, denn schau mal genau hin, er fügt die Items direkt mit Nummer ein:

public FooList()
{
	for( int i = 0; i < 10; i++ )
		this.Add( new Foo( "Foo " + i ) );
}

Hier ging es aber um die Möglichkeit Items zu nummerieren ohne deren Daten zu ändern.

J
jogibear9988 Themenstarter:in
641 Beiträge seit 2007
vor 13 Jahren

Jo danke David, genau das hab Ich gesucht!

cSharp Projekte : https://github.com/jogibear9988