2014-11-24 51 views
0

我从代码背后填充listview,为什么我要做这个场景是,我需要从后面的代码(一列,两列,三列)动态创建列。 ...)。我的代码看起来像下面如何将复选框添加到ListView中,使用WPF中的C#背后的代码

XAML代码:

<ListView ItemsSource="{Binding}" Name="lvLOv" Width="400"></ListView> 

C#代码:

输出:

enter image description here

但我需要把复选框b在像以下这样的每一行之前(我需要在代码后面像上面的代码一样执行此操作/将复选框代码集成到上面的代码中)。我需要在标题中加入checkall选项

public TestForm() this.InitializeComponent(); Test(); }

public void Test() 
{ 
    try 
    { 
     DataTable dt = new DataTable(); 

     //Create Columns 
     dt.Columns.Add("Initial", typeof(string)); 
     dt.Columns.Add("Name", typeof(string)); 

     //Adding Rows 
     for (int i = 0; i < 3; i++) 
     { 
      dt.Rows.Add("K" + i, "David" + i); 
     } 

     GridView gv = new GridView(); 


     // Create the GridView Columns 
     foreach (DataColumn item in dt.Columns) 
     { 
      GridViewColumn gvc = new GridViewColumn(); 
      gvc.DisplayMemberBinding = new Binding(item.ColumnName); 
      gvc.Header = item.ColumnName; 
      gvc.Width = Double.NaN; 
      gv.Columns.Add(gvc); 
     } 

     lvLOv.View = gv; 

     //Binding to Listview 
     lvLOv.DataContext = dt.DefaultView; 

    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 

} 

预期输出:

enter image description here

能否请你让我知道我可以实现这个功能

+2

这是*不*如何编写WPF。当使用WPF时,我们不*编程添加UI元素。相反,我们使用数据绑定和操作数据元素。有关详细信息,请参阅MSDN上的[数据绑定概述](http://msdn.microsoft.com/zh-cn/library/ms752347(v = vs.110).aspx)页面。 – Sheridan 2014-11-24 14:24:29

+0

你必须分配'ListView.ItemTemplate'。它可能不容易在代码后面([click](http://stackoverflow.com/q/14053804/1997232),[click](http://stackoverflow.com/q/12560249/1997232))。 – Sinatr 2014-11-24 14:24:43

+0

删除所有可怕的代码并使用正确的DataBinding和数据模板。 – 2014-11-24 14:29:17

回答

0

它真的很容易只是做..

在设计视图(Xaml)中:

<Window.Resources> 
    <DataTemplate x:Key="Chk_Field" DataType="{x:Type GridViewColumn}"> 
     <CheckBox IsChecked="{Binding chk}" /> 
    </DataTemplate> 
</Window.Resources> 

在后面的代码:

GridView gridview = new GridView(); 
Window window = Application.Current.MainWindow; 
DataTemplate s = (DataTemplate)window.FindResource("Chk_Field"); 
gridview.Columns.Add(new GridViewColumn { Header = "Head", CellTemplate = s }); 

通过这样做,你可以改变celltemplate在后面的代码中的每个列..

相关问题