У меня есть string[]
в WPF, это список художников. Я хочу отобразить их следующим образом: 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 отображается два исполнителя, и последняя (я полагаю, я решил, что один) - это щелчок.
Уведомления об обновлении не важны, так как я постоянно меняю источник, когда появляются новые данные (потому что обычно они все новые).