2011-01-14 53 views
2

如何将子项目添加到ListView?我需要动态生成一切,但我发现每个示例都使用XAML。将子项目添加到ListView而不使用XAML

非WPF是如此简单:

ListViewItem lvi = listview.items.add(wahtever); 
lvi. blah blah blah 

如何在WPF加分项目,而无需使用XAML?

+1

的WPF的ListView不要有 '子项' 像旧的WinForms一样。它需要一个非常不同的思维模式。我认为你现在的样子,所有的XAML到底是什么? Winforms更直接。但现在,我不能回到winforms。 WPF在我的书中胜出。只需要一点时间让你的头部,但是当你这样做。这很棒。 – 2011-01-14 02:54:21

+1

是的,我记得我的WPF头几个月...我的秃子增加了...现在我想到的任何UI平台,我想它有绑定,主题,样式,触发器,DataContexts,命令,附加属性。该死的WinForms太蹩脚了! :p – 2011-09-09 07:59:33

回答

-2

SubItem or ListItem ?? 简单:

myListbox.Items.Add(object); 

您可以添加任何类型的对象到该集合或特定ListBoxItem的对象像这样的:

this.List.Items.Add(new ListBoxItem{ Content = "Value to display"}); 
4

的“WPF办法”将是您的列表视图绑定到一个集合代表您想要显示的数据。然后将包含数据的对象添加到该集合。您几乎从不需要按照计划进行手动处理将ListViewItems手动添加到您的列表中。我能想出一个例子,但有在这里的许多线程,以便已经是解决正是这个问题:

  1. Add programmatically ListViewItem to Listview in WPF
  2. WPF ListView - how to add items programmatically?
+0

我需要一个忙,我如何通过动态添加行来更改背景颜色? – Sandy 2011-01-28 05:13:42

5

如前所述,WPF没有分项像WinForms。相反,您可以在适合您的目的的对象上使用属性。

为了完整起见,这里是XAML与代码的对比。

XAML:

<UniformGrid Columns="2"> 
     <ListView Name="xamlListView"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="X Value" DisplayMemberBinding="{Binding X}"/> 
        <GridViewColumn Header="Y Value" DisplayMemberBinding="{Binding Y}"/> 
       </GridView> 
      </ListView.View> 
      <ListView.Items> 
       <PointCollection> 
        <Point X="10" Y="20"/> 
        <Point X="20" Y="30"/> 
       </PointCollection> 
      </ListView.Items> 
     </ListView> 
     <ListView Name="codeListView"/> 
    </UniformGrid> 

代码:

private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     var view = new GridView(); 
     view.Columns.Add(new GridViewColumn { Header = "First Name", DisplayMemberBinding = new Binding("First") }); 
     view.Columns.Add(new GridViewColumn { Header = "Last Name", DisplayMemberBinding = new Binding("Last") }); 
     codeListView.View = view; 
     codeListView.Items.Add(new { First = "Bill", Last = "Smith" }); 
     codeListView.Items.Add(new { First = "Jane", Last = "Doe" }); 
    }