我正在尝试为Windows Phone 7制作自己的媒体播放器,第一步,我想在媒体库中显示所有歌曲的列表以选择它们。 正如我理解ListBox,我只需要命名texblocks就像我的类的属性,这将是“歌曲”
<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>
有人可以向我解释这个吗?
答案 0 :(得分:2)
ListBox是ItemsControl。 ItemsControl的内容映射到Items属性。通过这样做:
<ListBox>
<SomeContent/>
</ListBox>
您将Items属性设置为<SomeContent/>
。由于您不允许设置Items属性和ItemsSource属性,因此会出现异常。
执行此操作时:
<ListBox>
<ListBox.ItemTemplate>...</ListBox.ItemTemplate>
</ListBox>
您没有设置您正在设置ListBox属性的内容,因此没有冲突。