2011-01-14 11 views
2

サブアイテムをListViewにどのように追加しますか?すべてを動的に生成する必要がありますが、私が見つけたすべての例ではXAMLを使用しています。XAMLを使用せずにListViewにサブアイテムを追加

非WPFはとても簡単だった:

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

はどのようにXAMLを使用せずに、WPFでサブ項目を追加するには?

+1

WPFのリストビューはありません古いリサイズなどの 'サブ項目' を持っていけません。それはまったく異なる考え方を必要とします。私はあなたが今いる方法とまったく同じだと思った。すべてのXAMLで何があったのだろうか? Winformsははるかにまっすぐ進む。しかし今、私はwinformsに戻ることができません。 WPFが私の本を手に入れて勝ちます。あなたの頭の周りには、ちょっとした時間がかかります。それは素晴らしいです。 –

+1

私はWPFで私の最初の数ヶ月を覚えています...私の禿げが増えました...私はそれについてバインディング、テーマ、スタイル、トリガー、DataContexts、コマンド、添付プロパティを持っていると思います。気の利いたWinFormsはとても不自由です! :p –

答えて

-2

SubItemまたはListItem ?? 簡単:あなたはそのコレクションまたはこのような特定のListBoxItemオブジェクトに任意の型のオブジェクトを追加することができます

myListbox.Items.Add(object); 

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

「WPFの道」は、コレクションにあなたのリストビューをバインドするだろう表示するデータを表します。次に、データを含むオブジェクトをそのコレクションに追加します。あなたは、あなたがしようとしているように手動でリストにListViewItemsを追加することに対処する必要はほとんどありません。私は例を考え出すことができますが、多くのスレッドがSOすでに、まさにこの問題を解決することにここにあります:

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

私は1つの賛成が必要です、上記のように行を動的に追加して背景色を変更するにはどうしたらいいですか? – Sandy

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" }); 
    } 
+0

ありがとうございました。それがトリックでした。だから、あなたはコードでさえもバインディングを使っているようです。興味深い、そしてイライラした変化ですが、大変感謝していますので、私はあなたの助けをありがとう! – nitefrog

関連する問題