Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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 动态地将列添加到datagrid或使用列表中的特定列生成datagrid_Wpf_Vb.net_Data Binding_Datagrid_Datagridcolumn - Fatal编程技术网

Wpf 动态地将列添加到datagrid或使用列表中的特定列生成datagrid

Wpf 动态地将列添加到datagrid或使用列表中的特定列生成datagrid,wpf,vb.net,data-binding,datagrid,datagridcolumn,Wpf,Vb.net,Data Binding,Datagrid,Datagridcolumn,几天来,我一直在为datagriddatabinding而挣扎 我试图从自定义对象的列表动态生成datagrid。 因为我需要显示的列表对象属性的数量可能会改变,所以我不知道列的确切数量,也不知道它们的标题 所以我想,我应该只动态添加我需要的列,并为它们创建绑定(到特定的对象属性)。之后,我将根据绑定使用列表中的数据填充datagrid 例如: 我创建了一个空的datagrid <DataGrid x:Name="MyDataGrid" AutoGenerateColumns="fa

几天来,我一直在为
datagrid
databinding
而挣扎

我试图从自定义对象的
列表
动态生成
datagrid
。 因为我需要显示的列表对象属性的数量可能会改变,所以我不知道列的确切数量,也不知道它们的标题

所以我想,我应该只动态添加我需要的列,并为它们创建绑定(到特定的对象属性)。之后,我将根据绑定使用
列表中的数据填充
datagrid

例如:

我创建了一个空的
datagrid

   <DataGrid x:Name="MyDataGrid" AutoGenerateColumns="false" ItemsSource="{Binding}" Margin="0,0,0,31" Grid.RowSpan="2">
   </DataGrid>
现在,假设我只想在我的
datagrid
中显示
Name
列,因此我添加了一个具有特定绑定的列(可能这就是问题所在,但我无法解决):

然后,我最终创建了一些数据并将其添加到我的列表中:

    Dim entry As New DataItem

    entry.Name = "Test Name"
    entry.MyProperty = "Test Property"
    entry.Prop = "one Entry"

    Res.TableData.Add(entry)

    Me.MyDataGrid.ItemsSource = Res.TableData

现在的结果是,整个列都填充了相同的数据。其中,我的意图是只填充与确切的
列表
项对应的行。例如,如果我以后想用不同的“名称”将另一项添加到
列表中,它应该在
datagrid
中显示为另一行,并使用不同的“名称”。

我建议您将网格绑定到列表属性,让AutoGenerateColumns=True,然后听AutoGeneratingColumn,然后决定是否要将该列添加到网格中。

好的,因为我对WPF比较陌生,我不知道您的建议是什么。我想我将试着研究如何听AutoGeneratingColumn。我想你有一个逻辑,关于哪些列要添加到网格中,哪些列不是?所以,让网格自动生成,并在生成时检查您的逻辑,并决定是否添加。。如果你需要澄清它的工作原理,请告诉我。帮助。虽然这感觉有点奇怪,但它是有效的。谢谢你的主意!
    Dim col As New DataGridTextColumn
    Dim bb As New Binding

    bb.Path = New PropertyPath("Name")
    bb.Mode = BindingMode.TwoWay
    bb.Source = Res.TableData

    col.Binding = bb
    col.Header = "Name"

    MyDataGrid.Columns.Add(col)
    Dim entry As New DataItem

    entry.Name = "Test Name"
    entry.MyProperty = "Test Property"
    entry.Prop = "one Entry"

    Res.TableData.Add(entry)

    Me.MyDataGrid.ItemsSource = Res.TableData