c# - TextBlock 未显示在 ListView 中

标签 c# wpf listview mvvm

这是我的 ListView :

<ListView ItemsSource="{Binding ModuleList}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <!--<Image Source="{Binding ModuleImage}" Stretch="UniformToFill"/>-->
                <TextBlock Text="{Binding ModuleName}"/>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

这是 WPF (MVVM) 中的代码:
public ItemListViewVM() : base()
{
    ModuleList = new List<Module>();

    modulLoader.LoadAllModules();
    tempModulList = modulLoader.GetAllModules();

    foreach (var module in tempModulList)
    {
        ModuleImage = module.ModuleImage;
        ModuleName = module.Name;
        ModuleList.Add(module);
    }
}

长话短说:名单tempModulList包含 Module 类型的对象,它有一个 ImageSource Image和一个字符串 Name .然后 ModuleList 得到一个接一个的项目。当我在 xaml 中取消注释图像时,您可以看到它。但是 TextBlock 无论如何都不会出现。我检查了字符串 module.Name对于每个项目,它都不是空的。

编辑:添加模块类
模块类只包含名称和图像:
public class Module
{
    public ImageSource ModuleImage { get; set; }
    public string Name { get; set; }
}

通过反序列化 Json 创建对象

最佳答案

ItemTemplate 中的绑定(bind)使用数据项类的属性作为其源属性。因此你应该写

Text="{Binding Name}"

代替
Text="{Binding ModuleName}"

除非你设置 View ListView 的属性(例如 GridView )您还可以更好地使用 ListBox,它是 ListView 的基类,并且更简单:
<ListBox ItemsSource="{Binding ModuleList}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Image Source="{Binding ModuleImage}"/>
                <TextBlock Text="{Binding Name}"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

初始化 ModuleList View 模型构造函数中的属性就像这样简单:
public ItemListViewVM()
{
    modulLoader.LoadAllModules();
    ModuleList = modulLoader.GetAllModules();
}

关于c# - TextBlock 未显示在 ListView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58851327/

相关文章:

android - 在 Android 中将字符串转换为 Arraylist<string>

c# - Microsoft Graph API 脚本身份验证

c# - 将非托管 C++ 项目移植到 C#

c# - 如何在 WPF 中自定义组合框按钮的外观

c# - 在 WPF 文本框中显示 "current working directory"

Android OnItemClickListener 不起作用

c# - 帮助中的 View 过滤器不起作用

c# - LINQ to Entities 无法识别方法 IsUserInCc

wpf - 如何从 View 模型打开新窗口并将参数传递给MVVM?

android - 禁用屏幕上的按钮 - Android Studio