【问题标题】:How to move to the next row in a DataGrid (C# / WPF)如何移动到 DataGrid 中的下一行(C#/WPF)
【发布时间】:2017-04-20 14:08:32
【问题描述】:

正如标题所说,我不明白 DataGrid 是如何工作的,让我用我的代码解释一下:

public class User
{
    public string NumeroTIC { get; set; }

    public string NumeroCNT1 { get; set; }

    public string NumeroCNT2 { get; set; }

    public DateTime Date { get; set; }
}

List<User> ImpulseData = new List<User>();
ImpulseData.Add(new User() { NumeroTIC = hex2, NumeroCNT1 = hex4, NumeroCNT2 = hex6, Date = DateTime.Now });
Dispatcher.BeginInvoke((Action)(() => { dgSimple.ItemsSource = ImpulseData; }));

所以,我想在每次调用我的班级时移到另一行,例如,我第一次调用我的班级,它在第一行写,我第二次调用它在第二行写, ETC.. 目前我的代码工作正常,但总是在同一行

变量:hex2,hex4,hex6,是来自串口的字节,但没关系

【问题讨论】:

  • 不要在每次要添加元素时创建新的List&lt;User&gt; 实例。相反,创建一个ObservableCollection&lt;User&gt; 并将其分配给ItemsSource 属性仅一次。然后稍后将元素添加到该集合中。
  • 正如@Clemens 指出的,您应该将所有用户对象添加到同一个 ObservableCollection。但“移至下一行”究竟是什么意思?
  • 致@mm8 :好的,所以我的软件必须从串行端口获取一些信息。每次使用串行端口时,我都想将数据放入我的数据网格中
  • 能否请您发布定义 ImpulseData 列表的类的所有代码?
  • 我不敢说白痴,但实际上它从未定义过,它是在 Dispartcher.blabla 被调用的最后一行定义的

标签: c# wpf datagrid


【解决方案1】:

使用插入代替添加

int myIndex;

ImpulseData.Insert(myIndex ,new User() { NumeroTIC = hex2, NumeroCNT1 = hex4, NumeroCNT2 = hex6, Date = DateTime.Now });

【讨论】:

  • 重新创建列表时无济于事。 OP 必须首先访问 existing 列表
  • 抱歉,我不明白您的代码,如果您想使用相同的列表,请在表单类中声明 ImpulseData 而不是在您的方法中。
  • 我还没有写任何代码。如果您对原始海报有任何建议,您可以edit您的答案并添加该信息
  • “我看不懂你的代码”,但你还是写答案?使用 Insert 而不是 Add 是无稽之谈。请不要在没有理解问题的时候写答案。
猜你喜欢
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 2011-01-10
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
  • 2017-07-09
相关资源
最近更新 更多