1

如何將Artists集合中的所有藝術家綁定到ListBoxPanoramaItem
我的XAML如下:從ArtistCollection綁定到Windows Phone 7上的PanoramaItem.Listbox的藝術家

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

請注意,我將ListBox綁定到我們剛在viewmodel中創建的Library屬性的子屬性Artists。我編輯ItemTemplate以僅顯示一個綁定到Artist名稱的TextBlock。

在你的模擬器,你只會看到1名藝術家爲例,測試與真正的設備這個解決方案,你將不得不使用WPConnect工具,這是解釋here

我希望這可以讓你去爲現在,如果還有問題,請告訴我。