1

我有个问题。我绑定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>
4

1 回答 1

2

我曾经在类似情况下使用的一个有点骇人听闻的解决方案是为此目的使用 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,如此处所述: 如何绑定 ListBoxItem 的索引

于 2013-01-20T01:07:19.190 回答