如何从文件夹在StackPanel WPF中添加多个图像

本文关键字:添加 图像 WPF StackPanel 文件夹 | 更新日期: 2023-09-27 18:28:35

我想给folder path,并且从该文件夹路径如果该folder contains 3 images我想display those 3 imagesStackPanel WPF Form

我尝试了下面这样的方法,它对一个图像很好,但如何从给定的文件夹加载所有图像?

<Window x:Class="wpfBug.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
    <StackPanel Name="sp">
    </StackPanel>
</Window>

private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Image i = new Image();
            BitmapImage src = new BitmapImage();
            src.BeginInit();
            src.UriSource = new Uri("mypic.png", UriKind.Relative);
            // how to load all images from given folder?
            src.EndInit();
            i.Source = src;
            i.Stretch = Stretch.Uniform;
            //int q = src.PixelHeight;        // Image loads here
            sp.Children.Add(i);
        }

如何从文件夹在StackPanel WPF中添加多个图像

您应该使用如下所示的ItemsControl。它使用垂直的StackPanel作为其项目的默认面板。

<ItemsControl x:Name="imageItems">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}" Margin="5"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

将ItemsControl的ItemsSource设置为:

imageItems.ItemsSource = Directory.EnumerateFiles(FOLDERPATH, "*.png");

从路径字符串到ImageSource的转换是通过WPF中的内置类型转换来执行的。


您可以使用不同的项目面板,如下所示:

<ItemsControl ...>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    ...
</ItemsControl>