Good afternoon, tell me, is it possible to numbered ListView directly in the Xaml code? Without adding a new property to the model and other manipulations in the codebook?

<ListView x:Name="groupSostav" SelectedIndex="{Binding SelectedIndexInListBox}" ItemsSource="{Binding ItemsForListBox}" SelectedItem="{Binding SelectedItemInListBox}"> <ListView.View> <GridView> <GridViewColumn DisplayMemberBinding="{Binding ??? }"/> <GridViewColumn DisplayMemberBinding="{Binding Name}"/> <GridViewColumn DisplayMemberBinding="{Binding Target}"/> </GridView> </ListView.View> </ListView> 

In the column where {Binding ??? }

    1 answer 1

    demonstration of numbering in ListView

    We need a class converter

     public class ItemPositionToIndexConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { ListViewItem lvItem = value as ListViewItem; int index = 0; if (lvItem != null) { ListView listView = ItemsControl.ItemsControlFromItemContainer(lvItem) as ListView; //нумерацию будем вести с единицы index = listView.ItemContainerGenerator.IndexFromContainer(lvItem) + 1; } return index; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 

    Given that this class is at the root of the project

     <Window.Resources> <local:ItemPositionToIndexConverter x:Key="PositionConverter" /> </Window.Resources> 

    Then for ListView should be like this (note the <ListView.Resources> section and CellTemplate )

     <ListView ItemsSource="{Binding Entries}" x:Name="listView" Height="193" Canvas.Left="29" Canvas.Top="30" Width="125"> <ListView.Resources> <DataTemplate x:Key="ColumnDataTemplate"> <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListViewItem}, Converter={StaticResource ResourceKey=PositionConverter}}" HorizontalAlignment="Center" /> </DataTemplate> </ListView.Resources> <ListView.View> <GridView> <GridViewColumn Header="н/п" CellTemplate="{StaticResource ResourceKey=ColumnDataTemplate}" /> <GridViewColumn Header="Имя" Width="70" DisplayMemberBinding="{Binding}" /> </GridView> </ListView.View>