C# 使用自适应栅格视图显示本地文件夹中的图像
我正在使用Microsoft.Toolkit库,我想知道是否有办法使用自适应网格视图显示本地文件夹中的图像。 这是我的密码:C# 使用自适应栅格视图显示本地文件夹中的图像,c#,xaml,uwp,C#,Xaml,Uwp,我正在使用Microsoft.Toolkit库,我想知道是否有办法使用自适应网格视图显示本地文件夹中的图像。 这是我的密码: <Page.Resources> <DataTemplate x:Key="Photos"> <Grid> <Image Source="{Binding ImageURL}" Stretch="Unifo
<Page.Resources>
<DataTemplate x:Key="Photos">
<Grid>
<Image Source="{Binding ImageURL}"
Stretch="UniformToFill"
HorizontalAlignment="Center"
VerticalAlignment="Center">
</Image>
<TextBlock Foreground="Black" FontWeight="Thin" Text="{Binding ImageText}"
FontSize="20">
</TextBlock>
</Grid>
</DataTemplate>
</Page.Resources>
<Grid>
<UWPToolkit:AdaptiveGridView x:Name="AdaptiveGV" ItemHeight="200" DesiredWidth="200" ItemTemplate="{StaticResource Photos}"/>
<Button Content="pick folder" Click="Button_Click" Margin="20,4,0,604"/>
</Grid>
我只能通过将imageURL字符串值设置为图像的值或URL,才能从web上获取图像和要显示的资产文件夹中的图像,但是有没有办法从本地文件夹中获取要显示的图像 如果要从本地目录获取文件,请使用DirectoryInfo并执行类似操作
var di = new DirectoryInfo("c:\\temp");
var listOfFileExtention = new List<string>();
foreach (var f in di.GetFiles("*.*", SearchOption.AllDirectories))
{
if (listOfFileExtention.Any(x => x == f.Extension))
{
// your code here
}
}
var di=newdirectoryinfo(“c:\\temp”);
var listOfFileExtention=new List();
foreach(di.GetFiles(“*.*”,SearchOption.AllDirectories)中的var f)
{
if(listOfFileExtention.Any(x=>x==f.Extension))
{
//你的代码在这里
}
}
这将在文件中循环,查找与您正在查找的文件扩展名列表相匹配的任何文件,并对它们执行任何需要的操作
这只是示例代码,但将从本地目录获取所需的内容 根据财产文件: 应用程序中图像元素的典型用途是显示用户图片库中的图片。可以通过编程方式或通过FileOpenPicker访问这些图片。在任何一种情况下,您获得的StorageFile对象都可以作为流打开,但不提供图像文件的URI引用。 只有文档中描述的资源才能使用uri进行加载。代码中的图像路径不能直接设置为XAML中
image
控件的源
因此,我们需要读取文件流,并为图像控件设置一个类似或的对象
我按如下方式更新了您的代码,现在可以使用了:
List<Images> ImageCollection;
private async void Button_Click(object sender, RoutedEventArgs e)
{
ImageCollection = new List<Images>();
// pick a folder
var folderPicker = new Windows.Storage.Pickers.FolderPicker();
folderPicker.FileTypeFilter.Add(".jpg");
var folder = await folderPicker.PickSingleFolderAsync();
var filesList = await folder.CreateFileQueryWithOptions(new QueryOptions(CommonFileQuery.DefaultQuery, new string[] { ".jpg", ".png", ".jpeg" })).GetFilesAsync();
for (int i = 0; i < filesList.Count; i++)
{
StorageFile imagefile = filesList[i];
BitmapImage bitmapimage = new BitmapImage();
using (IRandomAccessStream stream = await imagefile.OpenAsync(FileAccessMode.Read))
{
bitmapimage.SetSource(stream);
}
ImageCollection.Add(new Images()
{
ImageURL = bitmapimage,
ImageText = filesList[i].Name
});
}
AdaptiveGV.ItemsSource = ImageCollection;
}
}
public class Images
{
public ImageSource ImageURL { get; set; }
public string ImageText { get; set; }
}
列表图像采集;
专用异步无效按钮\u单击(对象发送方,路由目标)
{
ImageCollection=新列表();
//选择一个文件夹
var folderPicker=new Windows.Storage.Pickers.folderPicker();
folderPicker.FileTypeFilter.Add(“.jpg”);
var folder=await folderPicker.PickSingleFolderAsync();
var filesList=wait folder.CreateFileQueryWithOptions(新的查询选项(CommonFileQuery.DefaultQuery,新字符串[]{.jpg“,.png“,.jpeg”})).GetFileAsync();
for(int i=0;i
您的代码确实有效,但它执行了它应该执行的操作,即从文件夹中获取文件列表。然而,我所坚持的是这个自适应栅格视图,我不能用自适应栅格视图来显示图像
var di = new DirectoryInfo("c:\\temp");
var listOfFileExtention = new List<string>();
foreach (var f in di.GetFiles("*.*", SearchOption.AllDirectories))
{
if (listOfFileExtention.Any(x => x == f.Extension))
{
// your code here
}
}
List<Images> ImageCollection;
private async void Button_Click(object sender, RoutedEventArgs e)
{
ImageCollection = new List<Images>();
// pick a folder
var folderPicker = new Windows.Storage.Pickers.FolderPicker();
folderPicker.FileTypeFilter.Add(".jpg");
var folder = await folderPicker.PickSingleFolderAsync();
var filesList = await folder.CreateFileQueryWithOptions(new QueryOptions(CommonFileQuery.DefaultQuery, new string[] { ".jpg", ".png", ".jpeg" })).GetFilesAsync();
for (int i = 0; i < filesList.Count; i++)
{
StorageFile imagefile = filesList[i];
BitmapImage bitmapimage = new BitmapImage();
using (IRandomAccessStream stream = await imagefile.OpenAsync(FileAccessMode.Read))
{
bitmapimage.SetSource(stream);
}
ImageCollection.Add(new Images()
{
ImageURL = bitmapimage,
ImageText = filesList[i].Name
});
}
AdaptiveGV.ItemsSource = ImageCollection;
}
}
public class Images
{
public ImageSource ImageURL { get; set; }
public string ImageText { get; set; }
}