wpf 如何为列表框中的每一项添加分隔符?

sr4lhrrt  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(124)

我正在写一个音乐播放器与播放列表在WPF。我的播放列表看起来:


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

  1. <ListBox
  2. x:Name="PlaylistBox"
  3. ScrollViewer.HorizontalScrollBarVisibility="Disabled"
  4. HorizontalAlignment="Left"
  5. Height="358"
  6. Margin="19,274,0,0"
  7. VerticalAlignment="Top"
  8. Width="299"
  9. Grid.ColumnSpan="2"
  10. BorderThickness="0"
  11. Foreground="White"
  12. SelectionChanged="PlaylistBox_SelectionChanged"
  13. MouseDoubleClick="PlaylistBox_MouseDoubleClick"
  14. Background="Black"
  15. AllowDrop="True"
  16. Drop="PlaylistBox_Drop"/>
ndasle7k

ndasle7k1#

您可以使用项目模板来完成此操作
在这个例子中,每个项目都被一个部分边框包围,在底部画一条线,给人一种分隔符的错觉。

  1. <ListBox x:Name="PlaylistBox" ...other properties...>
  2. <ListBox.ItemTemplate>
  3. <DataTemplate>
  4. <Border BorderThickness="0,0,0,2" BorderBrush="Black">
  5. <Label Content="{Binding}"/>
  6. </Border>
  7. </DataTemplate>
  8. </ListBox.ItemTemplate>
  9. </ListBox>

<Label Content="{Binding}"/ >可能对你不起作用,因为我不知道你的物品类型。
这只是一个非常基本的例子,可能有更好的方法来做到这一点,我不知道你是如何填充你的列表框,请阅读MVVM和绑定您的项目到一个模型中的集合

nwsw7zdq

nwsw7zdq2#

从注解中可以清楚地看到,您正在向列表PlaylistBox.Items.Add("String here");添加项目,如果是这样,请使用\n作为换行符:这里的例子:

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

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

相关问题