【问题标题】:DataGrid no means of adding rows?DataGrid没有添加行的方法吗?
【发布时间】:2021-01-16 00:45:57
【问题描述】:

在 VS 2019 中,似乎无法向 DataGrid 添加行:

<DataGrid Name="myDataGrid" Background="#50000000" Grid.Row="1" Grid.Column="1" Margin="10,10,10,10" ItemsSource="{Binding myDataGRid}" AutoGenerateColumns="False" />

myDataGrid.Rows.Add(r); // <= DataGrid does not contain a definition for 'Rows' ... 

如何以编程方式向 DataGrid 添加行/列?

表格可以按列添加,但是在添加新行时会很笨拙(必须保存列内容,列大小增加 1 并使用以前的值重新归档)。

这个问题似乎与this 不重复,因为:

  • 在链接到的示例中,网格已经有一个可以填充许多项目的固定结构
  • 但是,在这种情况下,DataGrid 布局是未知的,并在解析 .tex 文件时创建(列数/行数可能因文件而异)

【问题讨论】:

  • “在 VS 2019 中,似乎无法向 DataGrid 添加行” - 不过,这不是 VS 2019 的问题。
  • @Sinatr 部分地,那里的答案暗示 DataGrid 布局在否方面是固定的。行/列。就我而言,我不知道表格的布局(它是基于 .tex 文件生成的)。

标签: c# wpf data-binding datagrid


【解决方案1】:

您应该修改其数据源,而不是直接向 DataGrid 添加行。 DataGrid 将反映您在数据源中所做的任何更改,例如添加新行。正如documentation中提到的:

要将DataGrid 绑定到数据,请将ItemsSource 属性设置为 IEnumerable 实现。

Columns 属性可以通过编程方式修改:

您可以使用Columns 集合以编程方式添加、插入、 在运行时删除并更改控件中的任何列。检查 IsAutoGenerated属性判断某列是否为自动 生成或用户定义。自动生成的列将是 ItemsSource 时自动添加、删除或重新生成 变化。

【讨论】:

  • 谢谢!是否有任何代码可以说明如何以编程方式创建/删除行/列?在我的情况下,我无法将行绑定到对象,因为用户可能会自动添加新列。
  • 当然。您必须将项目添加到列表或集合,而不是 DataGrid。绑定已经使用 ItemsSource 数据绑定完成
  • @sven 你能指出一个更具体的参考(代码)吗?如果第 1 行有 4 个项目,第 2、6 行如何获得每行的最大大小并相应地更新 UI?
  • 我认为通过我的示例和 Miamy 的提示您可以做到。
  • @Sebi, DataGrid 旨在显示同质数据结构,例如订单列表。在你的情况下,我不确定这个组件是正确的选择。我认为您可以尝试使用Grid 实现所需的功能。
【解决方案2】:

视图模型:

....
public ObservableCollection<Customer> Customers { get; set; }
....
    
 public void AddNewCustomer(Customer customer)
 {
   
    Customers.Add(customer);
            
 }
    

xaml 文件: ...

<DataGrid 
ItemsSource="{Binding Path=Customers}">

...

【讨论】:

    【解决方案3】:

    在 VS 2019 中,似乎无法将行添加到 DataGrid ...

    VS 2019 是一个 IDE,DataGrid 类是 WPF 的一部分。不管怎样,试试Items 属性:

    myDataGrid.Items.Add(r); 
    

    但如果您希望能够编辑DataGrid 中的记录,您应该将ItemsSource 设置为ObservableCollection&lt;T&gt; 并将项目添加到此,而不是直接添加项目到Items 属性。

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 2010-10-15
      • 1970-01-01
      相关资源
      最近更新 更多