2010-06-30 19 views
5

ben XAML ilan 3 başlıklara sahip bir ListView var:Herhangi bir veri bağlama olmaksızın çok sütunlu bir ListViewItem programlı olarak nasıl ekleyebilirim? aşağıdaki gibi

Ben programlı ilk altından gidecek Listviewıtem içindeki içeriği ayarlamak mümkün olan, bu ListView için bir ListViewItem eklemek istediğiniz
<ListView Name="myListView"> 
    <ListView.View> 
    <GridView> 
     <GridViewColumn Header="H1"/> 
     <GridViewColumn Header="H2"/> 
     <GridViewColumn Header="H3"/> 
    </GridView> 
    </ListView.View> 
</ListView> 

, ikinci ve üçüncü sütunlar ayrı ayrı. Şimdiye kadar, şu ana kadar sadece şu ana kadar kazandım:

ListViewItem l = new ListViewItem(); 
l.Content = "Content"; 
myListView.Items.Add(l); 
Bu, her bir sütunu "İçerik" dizesine ayarlar. Yukarıdaki kodu, 1., 2. ve 3. sütunların altında sırasıyla "İçerik 1", "İçerik 2" ve "İçerik 3" görüntüleyecek bir ListViewItem ekleyebilmek için nasıl değiştirebilirim? ListViewItem içinde bir SubItem veya ListViewSubItem özelliği aramayı denedim, ancak hiçbir şey bulunamadı.

Ben basit bir çözüm var varsayalım, ama belki de yanılıyorum. Lütfen veri bağlama konusundan bahsetmeyin, çünkü sadece Content sütunu her bir sütundaki bireysel değişiklikleri yansıtacak şekilde programlı olarak ayarlama konusuna bir cevap istiyorum.

Çok teşekkür ederim.

cevap

12

Bu, veri bağlama değil. Binding ifadesini, sütuna bir isim vererek düşünün. kodunda

<ListView Name="myListView"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="H1" DisplayMemberBinding="{Binding Col1}"/> 
      <GridViewColumn Header="H2" DisplayMemberBinding="{Binding Col2}"/> 
      <GridViewColumn Header="H3" DisplayMemberBinding="{Binding Col3}"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

: Burada yılında

myListView.Items.Add(new { Col1 = "test1", Col2 = "Test2", Col3="test3"}); 
+0

K! Teşekkür ederim. – Dalal

+0

Mükemmel! Teşekkürler! – Haris

+0

Bu, yalnızca derleme zamanında sütun sayısı biliniyorsa çalışır. Hala sayımı zamanında – Rajiv

0

yapmanız şeydir. Önce sütun headins belirlemek zorunda

, aksi bir şey gösterecektir. Dize dizisini kullanarak liste görünümü öğelerini ekleyin.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 

     listView1.View=View.Details; 
     //Set Columns 
     listView1.Columns.Add("Col1"); 
     listView1.Columns.Add("Col2"); 
     listView1.Columns.Add("Col3"); 
     //Fill Rows 
     ListViewItem lvi; 
     lvi=new ListViewItem(new string[] { "A", "B", "C" }); 
     listView1.Items.Add(lvi); 
     lvi=new ListViewItem(new string[] { "D", "E", "F" }); 
     listView1.Items.Add(lvi); 
     lvi=new ListViewItem(new string[] { "G", "H", "I" }); 
     listView1.Items.Add(lvi); 
    } 
} 

sonucu bir ekran görüntüsü çalıştığını

Scr

+2

Bu hatayı alıyorum: 'System.Windows.Controls.ListViewItem' '1' argümanlarını alan bir kurucu içermez. ' WPF kullanıyorum. Belki de bunu belirtmeyi unuttum. Çözümü işe yaramış olsaydı. Bunu çok daha kolaylaştıracaktır. – Dalal

+1

bu kod çalışmıyor, yukarıda belirtilenle aynı hata –

+0

Resim bağlantısını günceller misiniz? Şu anda öldü. Thx – abalter

İlgili konular