如何在ListBox中的每个项目中添加分隔符?

时间:2016-04-07 14:49:05

标签: c# wpf listbox

我正在WPF中编写带播放列表的音乐播放器。我的播放列表看起来:



但我希望每个项目都能获得分隔符。我尝试了一些方法,但都完成了现成的数据源。在我的播放列表中,我在代码中添加歌曲。

<ListBox 
        x:Name="PlaylistBox" 
        ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
        HorizontalAlignment="Left"
        Height="358" 
        Margin="19,274,0,0" 
        VerticalAlignment="Top" 
        Width="299" 
        Grid.ColumnSpan="2"
        BorderThickness="0" 
        Foreground="White" 
        SelectionChanged="PlaylistBox_SelectionChanged" 
        MouseDoubleClick="PlaylistBox_MouseDoubleClick" 
        Background="Black" 
        AllowDrop="True"  
        Drop="PlaylistBox_Drop"/>

2 个答案:

答案 0 :(得分:3)

您可以使用项目模板

来完成

在此示例中,每个项目都被部分边框包围,在底部绘制一条线,给出了分隔符的错觉。

<ListBox x:Name="PlaylistBox" ...other properties...>
      <ListBox.ItemTemplate>
            <DataTemplate>
                <Border BorderThickness="0,0,0,2" BorderBrush="Black">
                    <Label Content="{Binding}"/>
                </Border>
            </DataTemplate>
      </ListBox.ItemTemplate>
</ListBox>

<Label Content="{Binding}"/&GT;可能不适合你,因为我不知道你的物品类型。

这只是一个非常基本的例子,可能有更好的方法,我不确定你是如何填充你的列表框,请阅读MVVM并将你的项目绑定到模型中的集合

答案 1 :(得分:0)

从评论中可以清楚地看到,您要将列表PlaylistBox.Items.Add("String here"); if so use \ n`中的项目添加到换行符中: 例如:

string sample = "04 03:23 sample \n 11145kb .Mp3 44100kHz";
PlaylistBox.Items.Add(sample);
sample = "04 03:23 sample1 \n 11145kb .Mp3 44100kHz";
PlaylistBox.Items.Add(sample);
sample = "04 03:23 sample2 \n 11145kb .Mp3 44100kHz";
PlaylistBox.Items.Add(sample);

但是我确定这不是一个好方法,更好的选择是将列表与集合绑定。但问题中的信息有限