2014-11-24 20 views
1

我是WP 8.1的新手。我试图从WrapGrid中的Windows Phone 8.1中显示音乐文件夹。我能够访问文件夹,但我无法将它们显示为我构建的XAML设计中的文件夹。无法在WP 8.1中的WrapGrid中显示文件夹?

这里是我的XAML代码:

<Button x:Name="dumybutton" Content="Click me to see Folders" Background="#FF6E5FCF" Click="dumyclick"/> 
<Grid x:Name="ShowFolders" Background="#FFEA8282"> 
    <ScrollViewer> 
     <ListView x:Name="ViewMusicFolders" Grid.Row="1" Grid.Column="2" VirtualizingStackPanel.VirtualizationMode="Recycling" SelectionMode="None" IsActiveView="True">          
     <ListView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapGrid Orientation="Horizontal" MaximumRowsOrColumns="2" /> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
     </ListView> 
    </ScrollViewer> 
</Grid> 

我的C#代码:

private void dumyclick(object sender, TappedRoutedEventArgs e) 
{ 
    ViewMusicFolders.Opacity = 1; 
    GenerateFolders(); 
} 

private async void GenerateFolders() 
{ 
    try 
    { 
     // To get all music folders 
     IReadOnlyList<IStorageItem> MusicFolders = await KnownFolders.MusicLibrary.GetFoldersAsync();     
     SeeFolders(MusicFolders); 
    } 
    catch {} 
} 

private async void SeeFolders(IReadOnlyList<IStorageItem> MusicFolderList) 
{ 
    try 
    { 

     foreach(IStorageItem mItem in MusicFolderList) 
     { 
     IStorageItem item = mItem; 
     int temp = 0; 

     // Checks if the item is a Folder 
     if(item.IsOfType(Windows.Storage.StorageItemTypes.Folder)) 
     {      
      StorageFolder mFolder = (StorageFolder)item; 

      // To get all Items (Files & Folders) present in the folder 
      IReadOnlyList<IStorageItem> fileList = await mFolder.GetItemsAsync(); 

      // checks the count. If folder contains any files or sub-folders, fetch details & then traverse through the fileList. 
      if(fileList.Count >0) 
      { 
       // create object of MusicAlbums() class. 
       MusicF musicAlbumObj = new MusicF(); 

       // set name of item Folder. 
       musicAlbumObj.strName = item.Name; 

       // set path of item Folder. 
       musicAlbumObj.strPath = item.Path; 


       string showText = ""; 
       showText = musicAlbumObj.strName + " *** " + musicAlbumObj.strPath; 
       MessageDialog msg = new MessageDialog(showText); 
       await msg.ShowAsync(); 
      }      
     }     
     } 
    } 
    catch {} 
} 

我MusicF类

public class MusicF 
{ 
    public string strName { get; set; } 
    public string strPath { get; set; } 
} 

回答

2

对于离充足的,如果你想显示的文件夹的名称和路径,你应该做到以下几点:

在XAML中做以下修改:

<Button x:Name="dumybutton" Content="Click me to see Folders" Background="#FF6E5FCF" Click="dumyclick"/> 
<Grid x:Name="ShowFolders" Background="#FFEA8282"> 
    <ScrollViewer> 
     <ListView x:Name="ViewMusicFolders" Grid.Row="1" Grid.Column="2" VirtualizingStackPanel.VirtualizationMode="Recycling" SelectionMode="None" IsActiveView="True">          
     <ListView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapGrid Orientation="Horizontal" MaximumRowsOrColumns="2" /> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
       <TextBlock Text="{Binding strName}" /> 
       <TextBlock Text="{Binding strPath}" /> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
     </ListView> 
    </ScrollViewer> 
</Grid> 

并尝试在你的xaml.cs

应用以下更改
private async void SeeFolders(IReadOnlyList<IStorageItem> MusicFolderList) 
{ 

    List<MusicF> foldersList = new List<MusicF>(); 

    try 
    { 

     foreach(IStorageItem mItem in MusicFolderList) 
     { 
     IStorageItem item = mItem; 
     int temp = 0; 

     // Checks if the item is a Folder 
     if(item.IsOfType(Windows.Storage.StorageItemTypes.Folder)) 
     {      
      StorageFolder mFolder = (StorageFolder)item; 

      // To get all Items (Files & Folders) present in the folder 
      IReadOnlyList<IStorageItem> fileList = await mFolder.GetItemsAsync(); 

      // checks the count. If folder contains any files or sub-folders, fetch details & then traverse through the fileList. 
      if(fileList.Count >0) 
      { 
       // create object of MusicAlbums() class. 
       MusicF musicAlbumObj = new MusicAlbums(); 

       // set name of item Folder. 
       musicAlbumObj.strName = item.Name; 

       // set path of item Folder. 
       musicAlbumObj.strPath = item.Path; 

       foldersList.Add(musicAlbumObj); 


       string showText = ""; 
       showText = musicAlbumObj.strName + " *** " + musicAlbumObj.strPath; 
       MessageDialog msg = new MessageDialog(showText); 
       await msg.ShowAsync(); 
      }      
     }     
     } 

     ViewMusicFolders.ItemsSource = foldersList; 

    } 
    catch {} 
} 

我添加的代码段是这是缺少后面的代码文件夹列表;链接到您的xaml.cs.我希望这能解决问题。

+0

此代码没有显示任何文件夹。 @Meneses – 2014-11-25 05:57:16

+0

@WD你能否确认我的foldersList对象在foreach结束时有项吗? – Meneses 2014-11-25 10:04:34

相关问题