【问题标题】:ListView item not displayed correctlyListView 项目未正确显示
【发布时间】:2021-12-08 04:56:14
【问题描述】:

我有一个ObservableCollection 作为ItemsSourceListView。 添加项目工作正常,ListView 更新,但在ListView 中我只能看到:

我错过了什么?

public class MenuItem
{
    public string Item { get; set; }
    public string Price { get; set; }
}
    
// ...

public ObservableCollection<MenuItem> MenuItemList = new ObservableCollection<MenuItem>();

// ...

MenuItemList.Add(new MenuItem {Item = MenuData[6].InnerText, Price = PriceData[6].InnerText});

// ...

listViewFood.ItemsSource = MenuItemList;

【问题讨论】:

  • 您的 ListView 似乎缺少合适的 ItemTemplate。或者您如何期望“正确”显示?
  • Data Templating Overview。作为初学者,您应该阅读文档。您也可以在互联网上搜索教程。该示例使用 ListBox。

标签: c# wpf listview observablecollection


【解决方案1】:

您创建了一个自定义类型MenuItemListView 无法知道如何显示该类型的项目,因此它显示ToString 的结果,即此处的类型名称。您必须使用DataTemplate 自己定义项目的外观为ItemTemplate,例如:

<ListView x:Name="listViewFood">
   <ListView.ItemTemplate>
      <DataTemplate DataType="{x:Type MenuItem}">
         <StackPanel>
            <TextBlock Text="{Binding Item}"/>
            <TextBlock Text="{Binding Price}"/>
         </StackPanel>
      </DataTemplate>
   </ListView.ItemTemplate>
</ListView>

有关详细信息,请参阅Data Templating Overview,其中详细介绍了机制。

【讨论】:

  • 还值得一提的是,除非您设置 ListView 的 View 属性,否则您也可以使用更简单的 ListBox 类。
猜你喜欢
  • 1970-01-01
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多