我有问题。我将ListView
绑定到ObservableCollection<ImageSource>
:
<ListView x:Name="FramesListView" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Disabled"
ItemsSource="{Binding Path=FrameImages}" SelectionChanged="FramesListView_OnSelectionChanged">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel
Width="Auto"
ItemWidth="{Binding (ListView.View).ItemWidth, RelativeSource={RelativeSource AncestorType=ListView}}"
ItemHeight="{Binding (ListView.View).ItemHeight, RelativeSource={RelativeSource AncestorType=ListView}}" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Border Width="100" Height="75" BorderThickness="1" BorderBrush="DarkGray" VerticalAlignment="Center" Margin="7,5,7,5">
<StackPanel Orientation="Vertical">
<Image Margin="5,5,5,5" Width="100" Height="75" Source="{Binding}" Stretch="Fill"></Image>
<Label HorizontalAlignment="Center" Content="{Binding}"></Label>
</StackPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
除了一件事,一切都很好。我还想在每个图像下显示索引。我不知道如何实现这一点。
如何更改该行以使其成为可能?
<Label HorizontalAlignment="Center" Content="{Binding}"></Label>
答案 0 :(得分:2)
在类似的情况下,我曾经使用过一次有点hackish的解决方案是为此目的使用AlternationIndex属性。通过将AlternationCount设置为足够高的数字,AlternationIndex属性可以用作计数器。
<ItemsControl x:Name="itemsControl" AlternationCount="100000">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Path='(ItemsControl.AlternationIndex)', RelativeSource={RelativeSource AncestorType=ContentPresenter}}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
然而,这有一个缺点,编号从0开始。
另一个更清洁的解决方案包括创建ValueConverter,如下所述: How can I bind against the Index of a ListBoxItem