1

ArtistsコレクションのすべてのアーティストをPanoramaItemListBoxにバインドするにはどうすればよいですか?次のように
私のXAMLは次のとおりです。ArtistCollectionからWindows Phone上のPanoramaItem.Listboxにバインドする7

<controls:PanoramaItem Header="Artist" Name="Pan3"> 
    <!--Double line list with image placeholder and text wrapping--> 
    <ListBox Name="artistLb" Margin="0,0,-12,0" ItemsSource="{Binding Items}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal" Margin="0,0,0,17"> 
        <!--Replace rectangle with image--> 
        <Rectangle Height="100" Width="100" Fill="#FFE5001b" Margin="12,0,9,0"/> 
        <StackPanel Width="311"> 
         <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
         <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</controls:PanoramaItem> 

とxaml.csコード:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    MediaLibrary library = new MediaLibrary(); 
    int CountArtist = library.Artists.Count; 

    //binding the library.Artist to the Panorama item 
} 

ありがとう!

答えて

0

試しましたか?私の答えで

artistLb.DataContext = library.Artists; 
+0

私は以下を使用します: artistLb.ItemsSource = library.Artists; xaml:

1

私はあなたがWindows Phoneのパノラマプロジェクトから開始し、すでにメディアライブラリへのアクセスを得るためにMicrosoft.Xna.Frameworkへの参照を追加したと仮定します。

ListBoxのようなUiオブジェクトをバインドするときに、最良のソリューションの背後にあるコードには、既にプロジェクトで提供されているViewModelアプローチを使用することです。プロジェクトでは、MainViewModelを見つける必要があります。このビューモデルに次のプロパティを追加します。

private MediaLibrary _library; 
    public MediaLibrary Library 
    { 
     get 
     { 
      if (_library == null) 
      { 
       _library = new MediaLibrary(); 
      } 
      return _library; 
     } 
    } 

このプロパティは、MediaLibraryをxamlに公開します。ライブラリーは、初めて呼び出されたときにインスタンス化されます。

xamlから、このプロパティにバインドすることが可能になりました。私はListBoxのみを表示しています。

  <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Library.Artists}"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Margin="0,0,0,17" Width="432" Height="78"> 
          <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 

         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

私がViewModelで作成したライブラリプロパティのサブプロパティアーティストにListBoxをバインドしていることに注目してください。 ItemTemplateを編集してアーティスト名にバインドするTextBlockを1つだけ表示しました。あなたはちょうどあなたが、私は、これはあなたが今のために行くを取得願っていますhere

を説明しWPConnectツールを使用する必要があります実際のデバイスでこのソリューションをテストするために、一例として、1組のアーティストが表示されますあなたのエミュレータで

ご不明な点がございましたら、お知らせください。

関連する問題