0

我在 Windows 应用商店应用程序中发现了许多从资源中显示图像的示例,并让它在示例中显示图像,但我需要翻转视图在目录中显示图像,或者至少显示我通过代码提供的图像文件名. 到目前为止,我尝试了所有方法,翻转视图仍然是空的。我可能遗漏了一些明显的东西,这是 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>

这行得通,但它需要我先将图像添加为资源......

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);

但是(例如)这不会:

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

我想念什么?

4

1 回答 1

0

与此同时,我自己找到了答案,现在我为未来的读者添加了答案。上面的示例不起作用,因为在用户没有使用 FolderPicker 选择一个目录的情况下,不允许 Windows 8 应用程序访问 PC 的大部分目录。该程序稍后可以通过以下方式重新使用该目录:

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

我在这里更改了上面的 XAML:

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

如果在 Package.appxmanifest, Capabilities 中选中了“图片库”,则下面的任务将在 Flipview 中显示图片库中的所有 .JPG 文件:

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;
} 
于 2014-08-05T22:15:56.793 回答