2013-02-18 2 views
0

나는 Windows Phone 7 용 자체 미디어 플레이어를 만들기 위해 노력하고 있으며, 첫 번째 단계에서는 모든 노래 목록을 미디어 라이브러리에 선택하여 선택하려고합니다. 내가 목록 상자를 이해 으로, 내가 GUI에 노래의 내 목록을 처리해야, 난 그냥ListBox에 노래 목록 추가하기

<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> 

을 "노래"가 될 것입니다 내 클래스의 속성, 같은 texblocks 이름을 가지고 그리고 지금 내가 생각하고 Items 컬렉션은 ItemsSource을 사용하기 전에 비어 있어야합니다 - 나는 "InvalidOperationException이"를 얻을

songListGUI.ItemsSource = songs; 

그런데 : 난으로 그렇게하려고합니다. 이런 문제가 여러 개 발견되었으며,이 모든 콘텐츠를 표시하기 위해 새로운 클래스가 만들어졌습니다. 그러나 그것은 매우 편리하게 들어서면서 노래 교실에 충실하고 싶습니다./ 내가 여기서 뭘 잘못하고 있는지 알아?

편집 : 방금 ​​해결책을 찾았습니다. 왜 그런지 정확히 모르겠지만 .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> 

아무도 나에게 이것을 설명 할 수 있을까요?

답변

2

ListBox는 ItemsControl입니다. ItemsControl의 내용은 Items 속성에 매핑됩니다. 이렇게 그래서 :

<ListBox> 
    <SomeContent/> 
</ListBox> 

당신은 <SomeContent/>에 항목 속성을 설정하고 있습니다. Items 속성과 ItemsSource 속성을 설정할 수 없으므로 예외가 발생합니다.

당신이 할 때 :

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

당신은 충돌이 없다, 그래서 당신은 목록 상자의 속성을 설정하는 내용을 설정하지 않는 것입니다.