C# 无法在WP 8.1中显示WrapGrid中的文件夹?
我是WP 8.1的新成员。我正在尝试在WrapGrid中显示Windows Phone 8.1中的音乐文件夹。我可以访问这些文件夹,但无法在我构建的XAML设计中将它们显示为文件夹 这是我的XAML代码:C# 无法在WP 8.1中显示WrapGrid中的文件夹?,c#,xaml,windows-runtime,winrt-xaml,windows-phone-8.1,C#,Xaml,Windows Runtime,Winrt Xaml,Windows Phone 8.1,我是WP 8.1的新成员。我正在尝试在WrapGrid中显示Windows Phone 8.1中的音乐文件夹。我可以访问这些文件夹,但无法在我构建的XAML设计中将它们显示为文件夹 这是我的XAML代码: <Button x:Name="dumybutton" Content="Click me to see Folders" Background="#FF6E5FCF" Click="dumyclick"/> <Grid x:Name="ShowFolders" Backgr
<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>
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 {}
}
例如,如果要显示文件夹名称和路径,应执行以下操作:
<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中,更改为以下内容:
<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 {}
}
private async void see文件夹(IReadOnlyList MusicFolderList)
{
List foldersList=新列表();
尝试
{
foreach(音乐文件夹列表中的IStorageItem mItem)
{
IStorageItem=mItem;
内部温度=0;
//检查项目是否为文件夹
if(item.IsOfType(Windows.Storage.StorageItemTypes.Folder))
{
StorageFolder mFolder=(StorageFolder)项;
//获取文件夹中的所有项目(文件和文件夹)
IReadOnlyList fileList=wait mFolder.GetItemsAsync();
//检查计数。如果文件夹包含任何文件或子文件夹,请获取详细信息,然后遍历文件列表。
如果(fileList.Count>0)
{
//创建MusicAlbums()类的对象。
MusicF musicAlbumObj=新的MusicAlbums();
//设置项目文件夹的名称。
musicAlbumObj.strName=item.Name;
//设置项目文件夹的路径。
musicAlbumObj.strPath=item.Path;
foldersList.Add(musicAlbumObj);
字符串showText=“”;
showText=musicAlbumObj.strName+“***”+musicAlbumObj.strPath;
MessageDialog msg=新建MessageDialog(showText);
等待msg.ShowAsync();
}
}
}
ViewMusicFolders.ItemsSource=文件夹列表;
}
捕获{}
}
我添加的代码片段是将代码隐藏文件夹列表链接到xaml.cs时丢失的代码片段。我希望这能解决问题。@WD您能确认foreach结束时foldersList对象是否有项吗?