给 ListView 编号

Numbering a ListView

我有一个 ListView,其数据上下文是一个 ObservableCollection。然后,我使用 XAML 来格式化项目并绑定到它们在 ListView.ItemTemplate.DataTemplate 的 ListView 中的属性。现在,我想在这里添加一个TextBlock,通过XAML中的Binding来显示item在ListView中的位置。怎么做?

如果我答对了你的问题,你只需要在每个项目 DataTemplate 中添加一个 TextBlock,其中包含 ListView 中的索引号,对吗?

如果是这样,您可以通过执行以下操作轻松地做到这一点:

<DataTemplate x:Key="ItemTemplate">
    <Grid>
        <!--All your various UI elements here...-->

        <!--Add a TextBlock with the formatting you want-->
        <TextBlock Text="{Binding Position}"/>
    </Grid>
</DataTemplate>

在 C# 中,在创建 Source ObservableCollection 之后,在将其分配给 ViewModel 中的 属性 之前添加类似的内容:

for (int i = 0; i < myCollection.Count; i++)
{
    myCollection[i].Position = Convert.ToString(i);
}
//And then, the usual
Source = myCollection

注意:我假设您在 ViewModel 中有一个名为 Source 的 属性 并实现了 INotify属性Changed。您还必须修改您在 ObservableCollection 中使用的 class 并当然添加位置 属性 :)