以某种方式显示字符串数组

时间:2011-02-27 02:45:56

标签: c# wpf xaml

我在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相信我已经解决了那个问题就是点击了。

更新通知并不重要,因为我在有新数据时会不断交换源(因为它通常都是新的)。

1 个答案:

答案 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" />