TextBlock未显示在ListView中

这是我的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来创建对象

chunbaise0601 回答:TextBlock未显示在ListView中

ItemTemplate中的绑定使用数据项类的属性作为其源属性。因此,您应该写

Text="{Binding Name}"

代替

Text="{Binding ModuleName}"

除非您将ListView的View属性设置为(例如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属性将很简单:

public ItemListViewVM()
{
    modulLoader.LoadAllModules();
    ModuleList = modulLoader.GetAllModules();
}
本文链接:https://www.f2er.com/3104631.html

大家都在问