我正在使用Microsoft.Toolkit库,我想知道是否有办法使用自适应网格视图显示本地文件夹中的图像。 这是我的代码:
<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>
代码背后的代码:
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++)
{
ImageCollection.Add(new Images()
{
ImageURL = filesList[i].Path,
ImageText = filesList[i].Name,
});
}
AdaptiveGV.ItemsSource = ImageCollection;
}
}
Images类
public class Images
{
public string ImageURL { get; set; }
public string ImageText { get; set; }
}
我只能通过将imageURL字符串值设置为图像的值或URL来显示来自Web的图像和Assets文件夹中的图像,但是有没有办法让我可以显示图像从本地文件夹?
答案 0 :(得分:0)
根据Image.Source财产的文件:
应用程序中图像元素的典型用法是显示用户图片库中的图片。可以通过编程方式或通过FileOpenPicker访问这些图片。在任何一种情况下,您获得的StorageFile对象都可以作为流打开,但不提供对图像文件的URI引用。
只有文档How to load file resources (XAML)中描述的资源才能使用uri进行加载。代码中的图像路径无法直接设置为XAML中if (!string.IsNullOrEmpty(model.search))
{
Your code here
}
控件的源。
因此,我们需要阅读文件流并将ImageSource对象设置为BitmapImage或WriteableBitmap到图像控件。
我按如下方式更新了您的代码,现在可以使用了:
Image
答案 1 :(得分:-1)
如果要从本地目录获取文件,请使用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
}
}
这将遍历文件,并查找与您正在寻找的文件扩展名列表相匹配的任何内容,并随身携带。
这只是示例代码,但可以从本地目录中获取所需内容。