【发布时间】:2016-03-04 00:46:10
【问题描述】:
我很难为 WPF 窗口创建 UI。我正在尝试(动态)显示一堆带有电影名称的电影海报,直接在图像下方。 ItemsSource 通过foreach 迭代分配给图像列表。图像文件本身可能有不同的大小,但如下所示,我将设置一个统一的大小。
基本上,我的目标是让它看起来像这样:
到目前为止,我的代码只显示一个带有一个大水平行(?)的窗口,图像在中心,没有标签。这是我的 XAML 代码:
<Window x:Name="TVWindow" x:Class="PACS_Pre_Alpha.TV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TV" Height="746" Width="1000" ResizeMode="NoResize">
<Grid x:Name="TVGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<ListView x:Name="TvBox" HorizontalAlignment="Left" Height="648" VerticalAlignment="Top" Width="994" Grid.Row="5" Grid.Column="5">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="5" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" VerticalAlignment="Stretch">
<Image Source="{Binding ImageData}" HorizontalAlignment="Center" VerticalAlignment="Top" />
<TextBlock Text="{Binding Title}" HorizontalAlignment="Center" VerticalAlignment="Bottom" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
我的电影是用这个 C# 代码添加的:
foreach (string tvf in ContentFiles)
{
string ContentTitle = System.IO.Path.GetFileNameWithoutExtension(tvf);
MovieData cnt = new MovieData();
cnt.ImageData = LoadImage(ActualImage);
cnt.Title = ContentTitle;
ContentDataList.Add(cnt);
}
TvBox.ItemsSource = ContentDataList;
编辑:我已经按照@MarkFeldman 的建议更改了我的 XAML 标记,但现在什么也没有出现。 编辑:它目前看起来像这样:
【问题讨论】:
-
你能发布你的完整源代码吗?我想做类似的事情,这对我来说是一个很好的基石!