如何显示包含图像对象列表,绑定源MVVM

问题描述 投票:0回答:1

我想显示图像的列表,并张贴有关他们每个图像下面的一些信息。我想通过我的模型ObservableCollection和约束力,但它不能正常工作。现在我路过BitmapImages的ObservableCollection,它会显示图像,但我无法获取信息。有任何想法吗?我在WPF的工作与MVVM。

我试过到目前为止:

视图:

<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; }

ImageModel

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每个图像的数据属性,所以这就是为什么我使用它的源。

c# .net wpf mvvm
1个回答
2
投票

假设你ImageModel类就会像,

public class ImageModel 
{
    public string Path { get; set; }
    public string Title { get; set; }
}

您的视图模型属性会

public ObservableCollection<ImageModel> Images = new ObservableCollection<ImageModel>();

你的XAML应该像绑定

<ListView ItemsSource="{Binding Images}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <Image Source="{Binding Path}"/>
                <TextBlock Text="{Binding Title}"/>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
© www.soinside.com 2019 - 2024. All rights reserved.