向DataTemplate添加计数器



我有一个ItemsControl的DataTemplate,它输出一个带有一些绑定控件的Grid,这可以按预期工作。

但是,我希望网格的第一列输出每个网格的计数器。

例如。。。

<DataTemplate x:Key="myDataTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75" />
<ColumnDefinition Width="150" />
</Grid.ColumnDefinitions>
<TextBlock Text="X" /> <!-- I want a counter to go here -->
<TextBox Grid.Column="1" Text="{Binding Path=Name}" />
</Grid>
</DataTemplate>

我希望第一个TextBlock在DataTemplate输出新网格时显示1、2、3、4等。

有什么最好的方法吗?

谢谢!

您可以使用ItemsControlAlternationCountAlternationIndex来实现这一点。比如

<ItemsControl ItemsSource="{Binding Items}" AlternationCount="{Binding Items.Count}">
<ItemsControl.ItemTemplate>
<DataTemplate x:Key="myDataTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75" />
<ColumnDefinition Width="150" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource TemplatedParent}}" />
<TextBox Grid.Column="1" Text="{Binding Path=Name}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

这将为您提供基于0的索引;如果需要任何更改,可以使用IValueConverter

最新更新