我正在尝试仅使用XAML将集合绑定到ListBox。它有点工作,但它只显示MyProject.mainItem
(对象类型),而不是实际值。
在分配为DataContext的类中,我有:
ItemCatalog.Add(new mainItem { Ref = "555555", ItemName = "First Item" });
在包含ListBox的页面上的XAML中,我有:
<ListBox ItemsSource="{Binding ItemCatalog}">
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432">
<TextBlock Text="{Binding Ref}" TextWrapping="Wrap" Foreground="Black" />
<TextBlock Text="{Binding ItemName}" TextWrapping="Wrap" Margin="12,-6,12,0" Foreground="Black" />
</StackPanel>
</DataTemplate>
</ListBox>
它遍历整个ItemCatalog
集合,但它不显示First Item
这样的值,而只显示对象的类型。感谢
答案 0 :(得分:3)
如果主要项目没有可视化表示IE的数据模板。然后它会调用该对象的ToString()
进行显示。这就是你看到对象类型的原因。
为什么您的数据模板无效,是因为您试图像ListBoxItem
那样插入数据模板。
您要做的是覆盖ItemTemplate
<ListBox ItemsSource="{Binding ItemCatalog}">
<ListBox.ItemTemplate>
<DataTemplate/>
</ListBox.ItemTemplate>
</ListBox>
此外,您还需要将DataType
中的DataTemplate
属性设置为相应的类型。
希望它有所帮助。
答案 1 :(得分:0)
代码说DataTemplate是ListBox的一个项目。
尝试在<ListBox.ItemsTemplate>
附近添加<DataTemplate>
标记。