c# - 如何显示包含图像的对象列表并将其绑定(bind)到源 MVVM

标签 c# .net wpf mvvm

我想显示图像列表并在每张图像下方发布有关它们的一些信息。
我尝试通过 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/

相关文章:

c# - 以简单形式将字符串转换为 uri .NET

java - Linksys 路由器 Web 管理 - 在 .NET 中自动登录

c# - 在 Xamarin.Forms 的 WPF 预览中使用本地镜像

wpf - VirtualizingStackPanel 不会清除 ItemTemplate 中 TextBoxes 的文本

c# - 如何从谷歌可视化中隐藏一列

C# 在 switch 语句中没有隐式失败

.net - 获取 Windows 服务启动类型?

c# - 码头面板替代品

c# - 如何使用 DotNetOpenAuth 调试 400 Bad Request 错误?

c# - 如何通过使用任务的 I/O 绑定(bind)工作正确利用粗粒度并发?