ListView 项目显示不正确

ListView item not displayed correctly

我有一个 ObservableCollection 作为一个 ListViewItemsSource。 添加项目工作正常并且 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;

您创建了自定义类型 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,其中详细介绍了机制。