ListView 项目显示不正确
ListView item not displayed correctly
我有一个 ObservableCollection
作为一个 ListView
的 ItemsSource
。
添加项目工作正常并且 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;
您创建了自定义类型 MenuItem
。 ListView
无法知道如何显示此类型的项目,这就是为什么它显示 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,其中详细介绍了机制。
我有一个 ObservableCollection
作为一个 ListView
的 ItemsSource
。
添加项目工作正常并且 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;
您创建了自定义类型 MenuItem
。 ListView
无法知道如何显示此类型的项目,这就是为什么它显示 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,其中详细介绍了机制。