我想显示图像列表并在每张图像下方发布有关它们的一些信息。
我尝试通过 ObservableCollection
我的模型并绑定(bind)它,但它不起作用。现在我正在通过ObservableCollection
的 BitmapImages 并且它正在显示图像,但是我无法获取信息。有任何想法吗?我正在使用 MVVM 在 WPF 中工作。
到目前为止我尝试了什么:
查看:
<Grid>
<ListView ItemsSource="{Binding ImageModels}"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.CanContentScroll="False" MaxHeight="550">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Source="{Binding ImageModels.Data}" />
<TextBlock Text="{Binding ImageModels.Title}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
查看型号:
public ObservableCollection<ImageModel> ImageModels { get; set; }
图片型号
private string description;
private string title;
private string path;
private BitmapImage data;
public short Id { get; set; }
public short UserId { get; set; }
public DateTime Created { get; set; }
public string Description
{
get { return description; }
set
{
if (description != value)
{
description = value;
OnPropertyChanged("Description");
}
}
}
我没有向你展示整个
ImageModel
但你明白了。最重要的属性是
Data
因为我用那个来填充源,或者至少我正在尝试。当
ViewModel
已加载我从 DB 获取图像并使用 BitmapImage
填充每个图像的 Data 属性,所以这就是我将它用作源代码的原因。
最佳答案
假设您的 ImageModel
类会像,
public class ImageModel
{
public string Path { get; set; }
public string Title { get; set; }
}
您的 ViewModel 属性将是
public ObservableCollection<ImageModel> Images = new ObservableCollection<ImageModel>();
您的 XAML 应该有 Binding 之类的
<ListView ItemsSource="{Binding Images}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Source="{Binding Path}"/>
<TextBlock Text="{Binding Title}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
关于c# - 如何显示包含图像的对象列表并将其绑定(bind)到源 MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54619943/