如何从文件夹在 StackPanel WPF 中添加多个图像?
How do I add multiple images in StackPanel WPF from Folder?
我想给 folder path
并从那个文件夹路径如果 folder contains 3 images
我想 display those 3 images
进入 StackPanel 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);
}
您应该使用如下所示的 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 中的 built-in 类型转换执行。
您可以像这样使用不同的 ItemsPanel:
<ItemsControl ...>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
...
</ItemsControl>
我想给 folder path
并从那个文件夹路径如果 folder contains 3 images
我想 display those 3 images
进入 StackPanel 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);
}
您应该使用如下所示的 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 中的 built-in 类型转换执行。
您可以像这样使用不同的 ItemsPanel:
<ItemsControl ...>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
...
</ItemsControl>