gpt4 book ai didi

c# - 使用 WPF 和 XAML 创建图像的滚动网格

转载 作者:行者123 更新时间:2023-11-30 14:54:36 25 4
gpt4 key购买 nike

我目前有以下 XAML 代码,但当我运行我的应用程序时,会出现滚动条,但我无法滚动图像列表(滚动条不起作用)。

<Window x:Class="WPFMediaManager.MoviePanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MoviePanel" Height="1024" Width="1473.254" WindowStartupLocation="CenterScreen">

<Window.Resources>
<DataTemplate x:Key="ItemTemplate">
<WrapPanel>
<Image Width="200" Height="300" Stretch="Fill" Source="{Binding}"/>
<TextBlock Text="{Binding}"/>
</WrapPanel>
</DataTemplate>
</Window.Resources>

<Grid x:Name="movie_grid">
<ListView Grid.Row="4" Name ="MovieListView" ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Path = movie_posters_list}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="5" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
<TextBlock Name="SampleTextBlock" Text="{Binding Path=movie_names}" DataContext="{StaticResource ItemTemplate}"/>
</Grid>
</Window>

我不确定是什么导致了这个问题,也不确定我是否使用了适当的容器来存放图像。

我的目标是类似下面的布局:

enter image description here

C# 代码隐藏:

namespace WPFMediaManager {
/// <summary>
/// Interaction logic for MoviePanel.xaml
/// </summary>
public partial class MoviePanel : Window {
public MoviePanel() {
InitializeComponent();
}

List<ImageSource> movie_posters_list = new List<ImageSource>();
List<String> movie_names = new List<String>();
String regex_pattern = @"\\([\w ]+).(?:jpg|png)$";


public void LoadImages() {
//Image current_image;
String movie_poster_path = @"C:\Users\Vax\Desktop\movie_posters";
List<String> filenames = new List<String>(System.IO.Directory.EnumerateFiles(movie_poster_path, "*.jpg"));

foreach (String filename in filenames) {
this.movie_posters_list.Add(new BitmapImage(new Uri(filename)));
Console.WriteLine("filename " + filename);
Match regex_match = Regex.Match(filename.Trim(), regex_pattern);
String matched_movie_name = regex_match.Groups[1].Value;
this.movie_names.Add(matched_movie_name);
Console.WriteLine("Movie Name: " + matched_movie_name);

}

MovieListView.ItemsSource = movie_posters_list;
}

}

}

编辑:我尝试了@XAML Lover 概述的方法,但我再也看不到图像了。我不确定这是否是数据绑定(bind)问题。

最佳答案

TextBlock 隐藏了阻止用户输入的整个 ListView。查看修改后的 XAML,

<Grid x:Name="movie_grid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<ListView Grid.Row="1"
Name="MovieListView"
ItemTemplate="{StaticResource ItemTemplate}"
ItemsSource="{Binding Path = movie_posters_list}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="5" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
<TextBlock Name="SampleTextBlock"
Text="{Binding Path=movie_names}"
DataContext="{StaticResource ItemTemplate}" />
</Grid>

关于c# - 使用 WPF 和 XAML 创建图像的滚动网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com