2016-09-15 18 views
0

私はMicrosoft.Toolkitライブラリを使用していますが、Adaptive Grid Viewを使用してローカルフォルダから画像を表示する方法があるかどうかは疑問でした。ここ は私のコードです:背後Adaptive Grid Viewを使用してローカルフォルダから画像を表示

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

私が唯一であることを資産フォルダからウェブや画像から画像を取得することができたイメージクラス

public class Images 
    { 
     public string ImageURL { get; set; } 
     public string ImageText { get; set; } 
    } 

画像の値またはURLにimageURL文字列値を設定することによってのみ表示されますが、ローカルフォルダから画像を表示する方法はありますか?

答えて

0

:アプリで画像要素の

典型的な使用は、ユーザーの写真ライブラリから写真を表示することです。これらの画像は、プログラムまたはFileOpenPickerを介してアクセスできます。どちらの場合でも、取得したStorageFileオブジェクトはストリームとして開くことができますが、はイメージファイルへのURI参照を提供しません。

文書How to load file resources (XAML)に記載されているリソースのみが読み込みにuriを使用できます。コード内のイメージパスをXAMLのImageコントロールのソースとして直接設定することはできません。

ファイルストリームを読み込み、画像コントロールにBitmapImageまたはWriteableBitmapのようなオブジェクトを設定する必要があります。ImageSource

次のように私はあなたのコードを更新し、それが機能するようになりましたことができます。

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

これはファイルをループし、探しているファイル拡張子のリストと一致するものを探し、必要なものを実行します。

これは単なるサンプルコードですが、ローカルディレクトリから必要なものを得ることができます。 Image.Source財産の文書によると

+0

あなたのコードは、しかし、そのフォルダからファイルのリストを取得され、そのが行うことになって何の仕事やってん。しかし、私はこのアダプティブグリッドビューの物で https://www.nuget.org/packages/WinRTXamlToolkit.UWP/ 私はカント画像を表示することはできません – user3159792

関連する問題