2011-01-14 52 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" }); 
    }