【问题标题】:How to add Checkboxes to Listview from Code behind using C# in WPF如何在 WPF 中使用 C# 将复选框添加到 Listview
【发布时间】:2014-11-24 14:01:22
【问题描述】:

我正在从后面的代码中填充一个列表视图,为什么我要这样做,我需要从后面的代码中动态创建列(一列,二,三....)。我的代码如下所示

XAML 代码:

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

C# 代码:

输出:

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

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

}

预期输出:

请告诉我如何实现此功能

【问题讨论】:

  • 不是如何编写 WPF。使用 WPF 时,我们以编程方式添加 UI 元素。相反,我们使用数据绑定和操作数据元素。有关详细信息,请参阅 MSDN 上的 Data Binding Overview 页面。
  • 你必须分配ListView.ItemTemplate。在后面的代码中可能并不容易(clickclick)。
  • 删除所有可怕的代码并使用适当的数据绑定和数据模板。
  • 感谢您的建议,我知道,但我得到的数据不同(列数不同)。我知道运行时的列,那么如何将这些列绑定到列表视图
  • 为什么这个社区如此粗糙?

标签: c# .net wpf xaml listview


【解决方案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 });

通过这样做,您可以更改后面代码中每一列的单元格模板..

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多