我正在尝试在xaml(visual studio 2008)中定义多列listview,然后在c#中添加项目。我已经看过很多关于这个主题的帖子,并尝试了各种方法,但我收到了错误。
我的xaml代码如下,VS没有标记任何错误。
<ListView Height="234.522" Name="chartListView" Width="266.337">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="70"/>
<GridViewColumn Header="ID" />
</GridView>
</ListView.View>
</ListView>
尝试将数据添加到列中 我创建了一个按钮并将代码放在按钮单击中:
private void button3_Click(object sender, RoutedEventArgs e)
{
chartListView.Items.Add("item1").SubItems.Add("item2");
}
显示在Subitems上的错误是:
'int'不包含'SubItems'的定义,也没有扩展方法'SubItems'接受类型'int'的第一个参数(你是否缺少using指令或汇编引用?)D:\ devel的\ VS \ pchart \ pchart \ pchart \ Window1.xaml.cs
另外,我尝试查看listview控件上的其他帖子,例如
我在那里尝试了代码:
ListViewItem item = new ListViewItem(); item.Text = anInspector.getInspectorName()的ToString();
并在item.Text上得到了与SubItems几乎相同的错误。我的代码或项目定义中是否有一些我缺少的东西?
感谢您的帮助
答案 0 :(得分:3)
WPF ListView
中没有“子项”这样的东西(也许你会把它与Windows Forms ListView混淆)。 Items属性无论如何都返回object
的集合,而object
没有SubItems
属性。实际上,ListView中的每个项目可能都有多个属性,您可以使用DisplayMemberBinding
属性指定要显示的属性:
<强> XAML 强>
<ListView Height="234.522" Name="chartListView" Width="266.337">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="70"/>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding ID}" />
</GridView>
</ListView.View>
</ListView>
C#:
private void button3_Click(object sender, RoutedEventArgs e)
{
chartListView.Items.Add(new { Name = "test1", ID = "test2" });
}
(它不一定是匿名对象,当然可以使用命名类...)