将歌曲列表添加到列表框中

本文关键字:列表 添加 | 更新日期: 2023-09-27 17:59:56

我正在尝试为Windows Phone 7制作我自己的媒体播放器,第一步,我想显示媒体库中所有歌曲的列表来选择它们。正如我对ListBox的理解,我只需要像我的类的属性一样命名texblock,它将是"Song"

<ListBox FontSize="30" Name="songListGUI" Height="330" Margin="0,120,0,0">
     <Button Width="430" Height="60" BorderThickness="0" Margin="0" >
          <Button.Content>
              <StackPanel Orientation="Horizontal" Width="420" Height="auto">
                 <TextBlock Name="Name" Text="{Binding Name}" FontSize="22"></TextBlock>
                 <TextBlock Text=" - " FontSize="22"></TextBlock>
                 <TextBlock Name="Artist" Text="{Binding Artist}" FontSize="22"></TextBlock>
              </StackPanel>
          </Button.Content>
       </Button>
    </ListBox>

现在我想,我应该把我的歌曲列表处理到GUI上,我试着用来做到这一点

   songListGUI.ItemsSource = songs;

但随后我得到了一个"InvalidOperationException"-在使用ItemsSource之前,Items集合必须为空。我发现了几个类似的问题,他们都创建了一个新的类来显示这些内容。但我想继续上歌曲课,因为它很方便:/你知道我在这里做错了什么吗?

编辑:我刚刚找到了解决办法。不知道确切的原因,但.xaml的这个变化让我的da:):

<ListBox FontSize="30" Name="songListGUI" Height="330" Margin="0,120,0,0">
   <ListBox.ItemTemplate>
       <DataTemplate>
           <Button Width="430" Height="60" BorderThickness="0" Margin="0" >
                 <Button.Content>
                      <StackPanel Orientation="Horizontal" Width="420" Height="auto">
                          <TextBlock Name="Name" Text="{Binding Name}" FontSize="22"></TextBlock>
                          <TextBlock Text=" - " FontSize="22"></TextBlock>
                          <TextBlock Name="Artist" Text="{Binding Artist}" FontSize="22"></TextBlock>
                      </StackPanel>
                  </Button.Content>
            </Button>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

有人能向我解释一下吗?

将歌曲列表添加到列表框中

ListBox是一个ItemsControl。ItemsControl的内容映射到Items属性。因此,通过这样做:
<ListBox>
  <SomeContent/>
</ListBox>

您正在将Items属性设置为<SomeContent/>。由于不允许设置Items属性和ItemsSource属性,因此会出现异常。

当你这样做时:

<ListBox>
  <ListBox.ItemTemplate>...</ListBox.ItemTemplate>
</ListBox>

您没有设置内容,而是设置ListBox的属性,这样就不会发生冲突。