WPF中的多列ListView - 错误

时间:2009-08-26 07:08:33

标签: wpf listview

我正在尝试在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控件上的其他帖子,例如

ListView - Inserting Items

我在那里尝试了代码:

ListViewItem item = new ListViewItem(); item.Text = anInspector.getInspectorName()的ToString();

并在item.Text上得到了与SubItems几乎相同的错误。我的代码或项目定义中是否有一些我缺少的东西?

感谢您的帮助

1 个答案:

答案 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" });
}

(它不一定是匿名对象,当然可以使用命名类...)