如何在WPF中使用C#将Checkbox添加到Listview

时间:2014-11-24 14:01:23

标签: c# .net wpf xaml listview

我正在从代码背后填充listview,为什么我这样做的情况是,我需要从代码后面动态创建列(一列,两列,三......)。我的代码如下所示

XAML代码:

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

C#代码:

输出:

enter image description here

但我需要在每行之前放置复选框,如下所示(我需要在代码中执行此操作,如上面的代码/在上面的代码中集成复选框代码)。我还需要在标题

中放置checkall选项

public TestForm() {     this.InitializeComponent();     测试(); }

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

您能告诉我如何实现此功能

1 个答案:

答案 0 :(得分:1)

这真的很容易做到这一点..

在设计视图(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 ..