Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
WPF c#,使用代码隐藏绑定datagrid列_C#_Wpf_Datagrid - Fatal编程技术网

WPF c#,使用代码隐藏绑定datagrid列

WPF c#,使用代码隐藏绑定datagrid列,c#,wpf,datagrid,C#,Wpf,Datagrid,我对如何将datagrid列绑定到集合有疑问 dataGrid1.Columns.Add(new DataGridTemplateColumn { Header="d", Binding = "RoomNumber"}); 绑定不存在我可以用什么绑定 它工作得很好,但我需要用代码绑定它 <DataGridTextColumn Header="Room Number" Binding="{Binding RoomNumber}"/> 使用datagrid的itemssourc

我对如何将datagrid列绑定到集合有疑问

 dataGrid1.Columns.Add(new DataGridTemplateColumn { Header="d", Binding = "RoomNumber"}); 
绑定不存在我可以用什么绑定

它工作得很好,但我需要用代码绑定它

 <DataGridTextColumn Header="Room Number" Binding="{Binding RoomNumber}"/>

使用datagrid的
itemssource
属性绑定到集合

xaml中的示例:

<DataGrid ItemsSource="{Binding Path=Tracks, IsAsync=True}" AutoGenerateColumns="False" >
        <DataGrid.Columns>
            <DataGridTextColumn Header="Song" Width="*" Binding="{Binding Name}" />
            <DataGridTextColumn Header="Artist"  Width="*" Binding="{Binding Artist}" />
            <DataGridTextColumn Header="Album" Width="*" Binding="{Binding Album}" />
        </DataGrid.Columns>
</DataGrid>

无法将单个列与集合绑定。您必须使用一个itemssource(可以是集合或任何东西)绑定整个DataGrid,然后将每个列与该集合的某个部分绑定

据我所知,您希望从代码隐藏中添加数据网格列,并且该列应使用绑定

下面是从代码隐藏添加datagrid列的示例代码段

 var col = new DataGridTextColumn();
            col.Header = "d";
            col.Binding = new Binding("RoomNumber");
            dataGrid1.Columns.Add(col);
使用这种方法,您可以添加任意数量的列,并且可以在运行时为每个列提供数据绑定,并且可以一次指定itemssource


确保在数据网格中标记AutoGenerateColumns=“False”,以避免从itemssource添加不需要的列

来自(和其他人)的答案基本上是正确的,只要您在某个时候已将DataGrid的ItemsSource属性设置为您的集合。

只是浪费了几个小时来完成这项工作,如果有人遇到问题,请添加我的起始代码作为示例

基本型号:

公共类SampleDataGridLine
{
公共样本数据网格线()
{
数据=新字符串[6];
对于(int i=0;i<6;i++)
数据[i]=“不适用”;
}
公共字符串[]数据;
公共字符串循环{get{return data[0];}set{data[0]=value;}
公共字符串a1{get{return data[1];}set{data[1]=value;}
公共字符串a2{get{返回数据[2];}set{data[2]=value;}
公共字符串a3{get{return data[3];}set{data[3]=value;}
公共字符串a4{get{return data[4];}set{data[4]=value;}
公共字符串a5{get{return data[5];}set{data[5]=value;}
}
代码隐藏:

int运行索引;
私有无效按钮\u单击(对象发送者,路由目标e)
{
string text=“a”+运行索引;
var col=新的DataGridTextColumn();
列标题=文本;
列绑定=新绑定(文本);
dataGrid.Columns.Add(col);
runningIndex++;
}
用户界面:



感谢您的重播。因此,我无法将一个接一个的datagrid列绑定到来自代码隐藏的集合?Column.Binding=新绑定(“RoomNumber”);我认为不需要那些堆叠面板
 var col = new DataGridTextColumn();
            col.Header = "d";
            col.Binding = new Binding("RoomNumber");
            dataGrid1.Columns.Add(col);