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,正如标题所说,我不明白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> I

正如标题所说,我不明白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; }));
公共类用户
{
公共字符串数字{get;set;}
公共字符串NumeroCNT1{get;set;}
公共字符串NumeroCNT2{get;set;}
公共日期时间日期{get;set;}
}
列表脉冲数据=新列表();
添加(新用户(){numeriotic=hex2,numeriocnt1=hex4,numeriocnt2=hex6,Date=DateTime.Now});
Dispatcher.BeginInvoke((操作)(()=>{dgSimple.ItemsSource=pulseData;}));
因此,每次调用我的类时,我都会移动到另一行,例如,我第一次调用我的类,它在第一行中写作,我第二次调用它在第二行中写作,等等。。 目前我的代码运行良好,但始终在同一行中

变量:hex2、hex4、hex6是来自串行端口的字节,但这并不重要

使用Insert代替Add

int myIndex;

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

不要每次添加元素时都创建一个新的
列表
实例。相反,创建一个
ObservableCollection
,并只将其分配给ItemsSource属性一次。然后稍后将元素添加到该集合中。正如@Clemens指出的,您应该将所有用户对象添加到同一个ObservableCollection中。但是“移动到下一行”到底意味着什么呢?对于@mm8:好的,所以我的软件必须从串行端口获取一些信息。每次使用serialport时,我都想将数据放在我的DataGrid中。您能发布定义PulseData列表的类的所有代码吗?我恐怕要说一些傻话,但它从来没有定义过。事实上,它是在调用Dispartcher.blabla的最后一行定义的。这对重新创建列表没有帮助。OP必须首先访问现有列表抱歉,我不理解您的代码,如果您想在form类中而不是在方法中使用相同的list declare PulseData。我还没有编写任何代码。如果您对原始海报有建议,您可以选择您的答案并添加信息“我不理解您的代码”,但您仍然要写答案吗?使用Insert而不是Add是毫无意义的。当你还没有理解这个问题时,请不要写答案。