我在WPF中有一个string[]
,这是一个艺术家列表。我想将它们显示如下:Artist A, Artist B, Artist C
(这是数组中的3个项目)。每个项目都需要可点击,我需要能够对点击进行操作。此视图应放入ListView
使用GridView
的歌曲中(此作品已有效,但目前仅在艺术家单元格中显示System.String[]
。)
当用户点击艺术家时,我需要知道哪个歌曲索引和所点击的艺术家索引(或什么歌曲索引和什么艺术家(字符串),然后我可以使用IndexOf()
来找到艺术家指数)。此外,我不希望单元格中显示滚动条,因此如果数组太长,则应该剪切内容。
我如何制作这样的东西?
到目前为止我所拥有的是:
<ListView x:Name="SpotifySongs" Grid.Row="3" Grid.Column="1" BorderThickness="0" ItemContainerStyle="{StaticResource ResourceKey=TrackListRowStyle}"
>
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn Width="25" Header="">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Path=IsStarred, Converter={StaticResource ResourceKey=StarredConverter}}" Height="13" Width="13" Margin="0" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="150" Header="Track" DisplayMemberBinding="{Binding Path=Name}"></GridViewColumn>
<GridViewColumn Width="150" Header="Artist">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListView ItemsSource="{Binding Path=Artists}" BorderThickness="0" ScrollViewer.CanContentScroll="False" Background="Transparent">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" CanHorizontallyScroll="False" CanVerticallyScroll="False" ClipToBounds="True"
Background="Transparent">
</StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Foreground="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType=ListViewItem, AncestorLevel=2}}"
Background="Transparent"
Text="{Binding}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50" Header="Time" DisplayMemberBinding="{Binding Path=Length}"></GridViewColumn>
<GridViewColumn Width="150" Header="Album" DisplayMemberBinding="{Binding Path=Album}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Artist
- 专栏艺术家。有3个问题,第一个是在艺术家名称之间获得,
,第二个是删除滚动条并启用裁剪,如果有两个很多艺术家要在150px内显示,而最后一个(I相信我已经解决了那个问题就是点击了。
更新通知并不重要,因为我在有新数据时会不断交换源(因为它通常都是新的)。
答案 0 :(得分:1)
我会使用List对象 因为ListView的DataSource是ICollection或IList String []不是。
List<String> stringList = new List<string>();
stringList.Add("Artist 1");
stringList.Add("Artist 2");
stringList.Add("Artist 3");
stringList.Add("Artist 4");
lsv.ItemsSource = stringList;
XAML
<ListView x:Name="lsv" />