2010-06-30 15 views
5

Tôi có một ListView với 3 tiêu đề, khai báo trong XAML như sau:Làm thế nào tôi có thể thêm lập trình một ListViewItem nhiều cột mà không cần bất kỳ ràng buộc dữ liệu nào?

<ListView Name="myListView"> 
    <ListView.View> 
    <GridView> 
     <GridViewColumn Header="H1"/> 
     <GridViewColumn Header="H2"/> 
     <GridViewColumn Header="H3"/> 
    </GridView> 
    </ListView.View> 
</ListView> 

Tôi muốn lập trình thêm một ListViewItem để ListView này, có thể thiết lập các nội dung trong ListViewItem rằng sẽ đi theo người đầu tiên, cột thứ hai và thứ ba riêng lẻ. Cho đến nay, tôi chỉ nhận được điều này đến nay:

ListViewItem l = new ListViewItem(); 
l.Content = "Content"; 
myListView.Items.Add(l); 

Điều này đặt từng cột thành chuỗi "Nội dung". Làm thế nào tôi có thể thay đổi mã ở trên để tôi có thể thêm một ListViewItem sẽ hiển thị "Nội dung 1", "Nội dung 2" và "Nội dung 3" dưới cột đầu tiên, thứ hai và thứ ba tương ứng? Tôi đã cố gắng tìm một tài sản SubItem hoặc ListViewSubItem trong ListViewItem, nhưng không tìm thấy gì cả.

Tôi cho rằng có một giải pháp đơn giản, nhưng có thể tôi đã sai. Vui lòng không đề cập đến ràng buộc dữ liệu, bởi vì tôi chỉ muốn câu trả lời cho câu hỏi đặt thuộc tính Nội dung theo chương trình để phản ánh các thay đổi riêng lẻ trong mỗi cột.

Cảm ơn bạn rất nhiều.

Trả lời

12

Đây không phải là dữ liệu. Hãy suy nghĩ về câu lệnh Binding như đặt tên cho cột.

<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> 

Trong mã:

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

K nó hoạt động! Cảm ơn bạn. – Dalal

+0

Tuyệt vời! Cảm ơn! – Haris

+0

Điều này sẽ chỉ hoạt động khi số lượng cột được biết tại thời gian biên dịch. Tôi vẫn chưa tìm thấy một giải pháp để thêm một chuỗi các chuỗi có số đếm được biết tại thời gian chạy – Rajiv

0

Trong đây là những gì bạn làm.

Trước tiên, bạn phải đặt tiêu đề cột, nếu không sẽ không có nội dung nào hiển thị. Thêm danh sách các mục xem bằng cách sử dụng một mảng chuỗi.

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); 
    } 
} 

một ảnh chụp màn hình của kết quả là

Scr

+2

Tôi nhận được lỗi này: 'System.Windows.Controls.ListViewItem' không chứa hàm tạo có đối số '1'. ' Tôi đang sử dụng WPF. Có lẽ tôi quên xác định điều đó. Tôi muốn giải pháp của bạn làm việc mặc dù. Nó sẽ làm cho nó dễ dàng hơn nhiều. – Dalal

+1

mã đó không hoạt động, cùng một lỗi như đã nêu ở trên –

+0

Bạn có thể cập nhật liên kết hình ảnh không? Nó đã chết ngay bây giờ. Thx – abalter

Các vấn đề liên quan