使用C#/Xaml在网格中显示可变数量的图像

使用C#/Xaml在网格中显示可变数量的图像,c#,windows,image,xaml,C#,Windows,Image,Xaml,我有一个方法可以检索图像的绝对路径列表。我希望使用这些检索到的值来显示Windows8应用程序内部的图像网格。需要注意的是,列表可以是任意大小的,我希望图像能够填满屏幕并继续向下 这似乎是一个非常简单的问题,但我找不到任何关于如何使用Google/Bing实现这一点的明确答案,所以我说我会在这里发布,希望有人知道在这种情况下该怎么做 目前,我只是从我的音乐文件夹中检索一个文件列表,并将它们附加到屏幕上显示的字符串中——没有图像出现,我不知道如何使用动态数量的图像来实现这一点。有人能帮我吗 迄今为

我有一个方法可以检索图像的绝对路径列表。我希望使用这些检索到的值来显示Windows8应用程序内部的图像网格。需要注意的是,列表可以是任意大小的,我希望图像能够填满屏幕并继续向下

这似乎是一个非常简单的问题,但我找不到任何关于如何使用Google/Bing实现这一点的明确答案,所以我说我会在这里发布,希望有人知道在这种情况下该怎么做

目前,我只是从我的音乐文件夹中检索一个文件列表,并将它们附加到屏幕上显示的字符串中——没有图像出现,我不知道如何使用动态数量的图像来实现这一点。有人能帮我吗

迄今为止的守则:

检索音乐文件夹中的图像:

 private async void SearchButton_Click(object sender, RoutedEventArgs e)
        {
            StorageFolder musicFolder = KnownFolders.MusicLibrary;

            List<string> fileTypeFilter = new List<string>();
            fileTypeFilter.Add(".png");

            QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderBySearchRank, fileTypeFilter);
            //use the user's input to make a query
            queryOptions.UserSearchFilter = InputTextBox.Text;
            StorageFileQueryResult queryResult = musicFolder.CreateFileQueryWithOptions(queryOptions);

            StringBuilder outputText = new StringBuilder();

            //find all files that match the query
            IReadOnlyList<StorageFile> files = await queryResult.GetFilesAsync();
            //output how many files that match the query were found
            if (files.Count == 0)
            {
                outputText.Append("No files found for '" + queryOptions.UserSearchFilter + "'");
            }
            else if (files.Count == 1)
            {
                outputText.Append(files.Count + " file found:\n\n");
            }
            else
            {
                outputText.Append(files.Count + " files found:\n\n");
            }

            //output the name of each file that matches the query
            foreach (StorageFile file in files)
            {
                outputText.Append(file.Name + "\n");
            }

            OutputTextBlock.Text = outputText.ToString();
        }
private async void SearchButton\u单击(对象发送方,路由目标)
{
StorageFolder musicFolder=KnownFolders.MusicLibrary;
List fileTypeFilter=新列表();
fileTypeFilter.Add(“.png”);
QueryOptions QueryOptions=新的QueryOptions(CommonFileQuery.OrderBySearchRank,fileTypeFilter);
//使用用户的输入进行查询
queryOptions.UserSearchFilter=InputTextBox.Text;
StorageFileQueryResult queryResult=musicFolder.CreateFileQueryWithOptions(queryOptions);
StringBuilder outputText=新建StringBuilder();
//查找与查询匹配的所有文件
IReadOnlyList files=await queryResult.getfileasync();
//输出找到的与查询匹配的文件数
如果(files.Count==0)
{
Append(“找不到“'+queryOptions.UserSearchFilter+””)的文件;
}
else if(files.Count==1)
{
outputText.Append(files.Count+“找到文件:\n\n”);
}
其他的
{
outputText.Append(files.Count+“找到的文件:\n\n”);
}
//输出与查询匹配的每个文件的名称
foreach(文件中的存储文件)
{
outputText.Append(file.Name+“\n”);
}
outputExtBlock.Text=outputExt.ToString();
}
以及用于OutputExtBlock的XAML,它显示文件名,但不显示图像:

<Grid x:Name="Output" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top">
    <TextBlock x:Name="OutputTextBlock" Style="{StaticResource BasicTextStyle}" TextWrapping="Wrap"/>
</Grid>

我不确定这是否适用于Windows 8应用程序。。。但在WPF中,我会尝试以下内容:

<ItemsControl ItemsSource="{Binding Path=YourListOfPaths}" 
              HorizontalContentAlignment="Stretch">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>


ItemsControl
ItemsSource
绑定到您的文件路径列表(例如
observedcollection
),
itemstemplate
描述了每个项目的显示方式-我刚刚为每个文件使用了一个
图像
控件。
已绑定到项目本身(此处为单个文件路径)。

我不确定这是否适用于Windows 8应用程序。。。但在WPF中,我会尝试以下内容:

<ItemsControl ItemsSource="{Binding Path=YourListOfPaths}" 
              HorizontalContentAlignment="Stretch">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

ItemsControl
ItemsSource
绑定到您的文件路径列表(例如
observedcollection
),
itemstemplate
描述了每个项目的显示方式-我刚刚为每个文件使用了一个
图像
控件。
绑定到项目本身(这里是单个文件路径)