我正在从代码背后填充listview,为什么我这样做的情况是,我需要从代码后面动态创建列(一列,两列,三......)。我的代码如下所示
XAML代码:
<ListView ItemsSource="{Binding}" Name="lvLOv" Width="400"></ListView>
C#代码:
输出:
但我需要在每行之前放置复选框,如下所示(我需要在代码中执行此操作,如上面的代码/在上面的代码中集成复选框代码)。我还需要在标题
中放置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);
}
}
预期输出:
您能告诉我如何实现此功能
答案 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 ..