0

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>

誰かが私にこれを説明できますか?

4

1 に答える 1

2

ListBox はItemsControlです。ItemsControl のコンテンツは、Itemsプロパティにマップされます。したがって、これを行うことによって:

<ListBox>
  <SomeContent/>
</ListBox>

Items プロパティを に設定しています<SomeContent/>ItemsプロパティとItemsSourceプロパティを設定することは許可されていないため、例外が発生します。

これを行う場合:

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

ListBox の属性を設定しているコンテンツを設定していないので、競合はありません。

于 2013-02-18T08:44:39.263 に答える