How to show image files from a directory in a flipview?

你说的曾经没有我的故事 提交于 2019-12-25 02:44:50

问题


I found many samples of displaying images from a resource in a Windows Store app and got it to display images within a sample, but I would require the flipview to show images in a directory, or at least to show image file names I provide by code. With everything I tried so far the flipview remains empty. I maybe missing something obvious, this is the relevant part of the XAML:

<FlipView x:Name="flipView1" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="809,350,9,7" Width="548" Height="411" >
    <FlipView.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding Path=Image }" Stretch="Uniform"/>
        </DataTemplate>
    </FlipView.ItemTemplate>
</FlipView>

this works, but it requires me to add the images a resource first....

ImageBrush brush1 = new ImageBrush();
brush1.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/P1000171.jpg"));
FlipViewItem flipvw1 = new FlipViewItem();
flipvw1.Background = brush1;
flipView1.Items.Add(flipvw1);

but (for example) this doesn't:

string name = String.Format(@"c:\temp\P1000171.JPG");
Uri uri = new Uri(name);
BitmapImage img = new BitmapImage(uri);
flipView1.Items.Add(img);

What do I miss?


回答1:


In the meantime I've found the answer myself which I now add for future readers. The above example won't work because a Windows 8 app isn't allowed to access most of the PC's directories without the user having selected one using a FolderPicker. The program can re-use that directory later with:

StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder);

I've changed the above XAML here:

<Image Source="{Binding}" Stretch="UniformToFill"/>

The Task below will show all .JPG files in the Pictures library in a Flipview, if, in the Package.appxmanifest, Capabilities, "Pictures library" has been checked:

public async Task flipviewload()
{


    IReadOnlyList<StorageFile> fileList = await picturesFolder.GetFilesAsync(); 
    var images = new List<BitmapImage>();
    if (fileList != null)
    {
        foreach (StorageFile file in fileList)
        {
            string cExt = file.FileType;
            if (cExt.ToUpper()==".JPG")
            {
                Windows.Storage.Streams.IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
                using (Windows.Storage.Streams.IRandomAccessStream filestream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
                {
                    BitmapImage bitmapImage = new BitmapImage();
                    await bitmapImage.SetSourceAsync(fileStream);
                    images.Add(bitmapImage);
                }
            }
        }
    }
    flpView.ItemsSource = images;
} 


来源:https://stackoverflow.com/questions/22389465/how-to-show-image-files-from-a-directory-in-a-flipview

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!