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

その間、将来の読者のために追加する答えを自分で見つけました。Windows 8 アプリは、ユーザーが FolderPicker を使用してディレクトリを選択しない限り、ほとんどの PC のディレクトリにアクセスできないため、上記の例は機能しません。プログラムは、後でそのディレクトリを再利用できます。

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

ここで上記の XAML を変更しました。

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

以下のタスクは、Package.appxmanifest の Capabilities で "Pictures library" がチェックされている場合、Pictures ライブラリ内のすべての .JPG ファイルを Flipview に表示します。

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 に答える