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将文本文件绑定到datagrid_C#_Wpf_Datagrid - Fatal编程技术网

C#WPF将文本文件绑定到datagrid

C#WPF将文本文件绑定到datagrid,c#,wpf,datagrid,C#,Wpf,Datagrid,如何使用C#WPF将文本文件绑定到数据网格?其思想是在文本文件中有一行显示为datagrid中的一行。我认为不能将文本直接绑定到datagrid 但是,您可以做的是将对象绑定到数据网格 创建一个表示文本文件的对象 -- content -- text1, param1, param2 text2, param1, param2 class OneLine{ string text {get;set;} string param { get;set; } ... }

如何使用C#WPF将文本文件绑定到数据网格?其思想是在文本文件中有一行显示为datagrid中的一行。

我认为不能将文本直接绑定到datagrid

但是,您可以做的是将对象绑定到数据网格

创建一个表示文本文件的对象

-- content --  
text1, param1, param2  
text2, param1, param2  

class OneLine{
  string text {get;set;}  
  string param { get;set; }
  ...
}
然后可以使用BindingList将这些对象绑定到datagrid,BindingList主要是一个列表。魔法在于物体的属性。BindingList将尝试获取对象的每个属性并在网格中显示它们

BindingList<OneLine> myList = new BindingList<OneLine>();
myList.Add(oneObject);

DataGrid myGrid = new DataGrid();
myGrid.DataSource = myList;
BindingList myList=newbindingList();
添加(一个对象);
DataGrid myGrid=新DataGrid();
myGrid.DataSource=myList;

我认为无法将文本直接绑定到数据网格

但是,您可以做的是将对象绑定到数据网格

创建一个表示文本文件的对象

-- content --  
text1, param1, param2  
text2, param1, param2  

class OneLine{
  string text {get;set;}  
  string param { get;set; }
  ...
}
然后可以使用BindingList将这些对象绑定到datagrid,BindingList主要是一个列表。魔法在于物体的属性。BindingList将尝试获取对象的每个属性并在网格中显示它们

BindingList<OneLine> myList = new BindingList<OneLine>();
myList.Add(oneObject);

DataGrid myGrid = new DataGrid();
myGrid.DataSource = myList;
BindingList myList=newbindingList();
添加(一个对象);
DataGrid myGrid=新DataGrid();
myGrid.DataSource=myList;

在我的项目中,我使用以下方法

  • 例如,创建表示文本文件中的行的类

    public class cls_syslog_record
    {
        public DateTime? f1 {get;set;}
        public string f2 {get;set;}                
        public string f3 {get;set;}
        public string f4 {get;set;}        
    }
    
  • 创建用作DataGrid源的IEnumerable

    public IEnumerable<cls_syslog_record> get_line_seq_text()
    {
        cls_mvs_syslog_parser parser = new cls_mvs_syslog_parser();
        foreach (string record_line in File.ReadLines(this.filename))
        {
            cls_syslog_record text_record = parser.parse_syslog_text(record_line);
            if (text_record == null)
            {
                 continue;
            }
            yield return text_record;
         }
    }
    
  • 然后设置绑定

    static private DataGridColumn create_column(string header, string p_property_name)
    {
        DataGridTextColumn column = new DataGridTextColumn();
        column.Header = header;
        column.Binding = new Binding(p_property_name);            
        return column;
    }
    

  • 在我的项目中,我使用以下方法

  • 例如,创建表示文本文件中的行的类

    public class cls_syslog_record
    {
        public DateTime? f1 {get;set;}
        public string f2 {get;set;}                
        public string f3 {get;set;}
        public string f4 {get;set;}        
    }
    
  • 创建用作DataGrid源的IEnumerable

    public IEnumerable<cls_syslog_record> get_line_seq_text()
    {
        cls_mvs_syslog_parser parser = new cls_mvs_syslog_parser();
        foreach (string record_line in File.ReadLines(this.filename))
        {
            cls_syslog_record text_record = parser.parse_syslog_text(record_line);
            if (text_record == null)
            {
                 continue;
            }
            yield return text_record;
         }
    }
    
  • 然后设置绑定

    static private DataGridColumn create_column(string header, string p_property_name)
    {
        DataGridTextColumn column = new DataGridTextColumn();
        column.Header = header;
        column.Binding = new Binding(p_property_name);            
        return column;
    }