Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#WPF中以编程方式创建数据网格?_C#_Wpf_Datagrid - Fatal编程技术网

如何在C#WPF中以编程方式创建数据网格?

如何在C#WPF中以编程方式创建数据网格?,c#,wpf,datagrid,C#,Wpf,Datagrid,如何在C#WPF中以编程方式创建数据网格? 根据用户的选择,我可以生成多个包含信息的数据网格 例如: if(true) { // Create a DataGrid programatically DataGrid DG = new DataGrid(); DG.ColumnHeader 1 = "Name" DG.ColumnHeader 2 = "Age" // Load info to the datagrid from somewhere // Add unde

如何在C#WPF中以编程方式创建数据网格? 根据用户的选择,我可以生成多个包含信息的数据网格

例如:

if(true)
{
  // Create a DataGrid programatically
  DataGrid DG = new DataGrid();
  DG.ColumnHeader 1 = "Name"
  DG.ColumnHeader 2 = "Age"

  // Load info to the datagrid from somewhere
  // Add under Name column the name "Fred" and "Tom"
  // Add under Age column "26" and "18"
  DG.FieldNameColumn.Row1 = "Fred"
  DG.Age.Row1 = "26"
  DG.FieldNameColumn.Row2 = "Tom"
  DG.Age.Row2 = " 18"
}
else
{
  // dont generate a DG ( don't do anything here)
}

您熟悉MVVM吗?我建议以“正确”的方式进行操作,并创建一个关联的
ViewModel
,其中包含一个集合if项。然后,
DataGrid
将绑定到该项集合

不过,为了回答您的问题,您可以通过以下方式实现您的目标:

  private void Button_Click(object sender, RoutedEventArgs e)
    {
        var nameBinding = new Binding("Name")
        {
            Mode = BindingMode.Default,
            UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
        };

        var ageBinding = new Binding("Age")
        {
            Mode = BindingMode.Default,
            UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
        };

        var dataGrid = new DataGrid();
        dataGrid.Columns.Add(new DataGridTextColumn
        {
            Header = "Name",
            Binding = nameBinding
        });
        dataGrid.Columns.Add(new DataGridTextColumn
        {
            Header = "Age",
            Binding = ageBinding
        });
        dataGrid.ItemsSource = new ObservableCollection<Info>
        {
            new Info
            {
                Name = "Name 1",
                Age = "100"
            }
        };

        MainGrid.Children.Add(dataGrid);
    }

    public class Info
    {
        public string Name { get; set; }
        public string Age { get; set; }
    }
private void按钮\u单击(对象发送者,路由目标)
{
var nameBinding=新绑定(“名称”)
{
Mode=BindingMode.Default,
UpdateSourceTrigger=UpdateSourceTrigger.PropertyChanged
};
var ageBinding=新绑定(“年龄”)
{
Mode=BindingMode.Default,
UpdateSourceTrigger=UpdateSourceTrigger.PropertyChanged
};
var dataGrid=new dataGrid();
添加(新的DataGridTextColumn
{
Header=“Name”,
Binding=nameBinding
});
添加(新的DataGridTextColumn
{
Header=“年龄”,
绑定=年龄绑定
});
dataGrid.ItemsSource=新的ObservableCollection
{
新信息
{
Name=“Name 1”,
年龄=“100”
}
};
MainGrid.Children.Add(dataGrid);
}
公共类信息
{
公共字符串名称{get;set;}
公共字符串年龄{get;set;}
}

请注意
MainGrid
是您要将
DataGrid
添加到的容器的名称。

如果您这样做,用户控件如何知道您要将DG放置在何处?为什么不创建一个用户控件并控制网格的可见性呢?