给 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 并当然添加位置 属性 :)
我有一个 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 并当然添加位置 属性 :)