如何使用方法在网格C#WPF中添加行

如何使用方法在网格C#WPF中添加行,c#,wpf,xaml,binding,datagrid,C#,Wpf,Xaml,Binding,Datagrid,我对WPF和C#编码还不熟悉。我正在尝试拆分8000个字节,每行显示32个字节。我编写了一个SPLITLIST方法,但不知道如何将它连接到我的dataGrid并创建250(8000byte/32byte)个单独的行。以下是我的方法: public partial class DataInHex : Window { CalibrationHexDataDTO _calibrationHExDataDTO = new CalibrationHexDataDTO();

我对WPF和C#编码还不熟悉。我正在尝试拆分8000个字节,每行显示32个字节。我编写了一个SPLITLIST方法,但不知道如何将它连接到我的dataGrid并创建250(8000byte/32byte)个单独的行。以下是我的方法:

 
public partial class DataInHex : Window
    {
        CalibrationHexDataDTO _calibrationHExDataDTO = new CalibrationHexDataDTO();
       
        const int SPLIT_SIZE = 32; //Size of the data in row
        public DataInHex(CalibrationHexDataDTO calibrationHexDataDTO)
        {
            InitializeComponent();
            this._calibrationHExDataDTO = calibrationHexDataDTO;
            dataInHexGrid.DataContext = calibrationHexDataDTO; //Here I get 8000 bytes of data

            SplitList();
        }
        public void SplitList() //Split the 8k bytes to 32 bytes per row
        {
            var list = new List<byte[]>();

            for (int i = 0; i < _calibrationHExDataDTO.Data.Length; i += SPLIT_SIZE)
            {
                byte[] splited = new byte[SPLIT_SIZE];
                // Array.Copy(_calibrationViewDTOs.Data,i,splited,0,SPLIT_SIZE);

                Buffer.BlockCopy(_calibrationHExDataDTO.Data, i, splited, 0, SPLIT_SIZE);
                list.Add(splited);
                
            }
       
        }
    }

公共部分类DataInHex:窗口
{
CalibrationHexDataDTO_CalibrationHexDataDTO=新校准HexDataDTO();
const int SPLIT_SIZE=32;//行中数据的大小
public DataInHex(校准HexDataDTO校准HexDataDTO)
{
初始化组件();
这是._calibrationHExDataDTO=calibrationHExDataDTO;
dataInHexGrid.DataContext=calibrationHexDataDTO;//这里我得到了8000字节的数据
拆分列表();
}
public void SplitList()//将8k字节拆分为每行32字节
{
var list=新列表();
用于(int i=0;i<\u校准HexDataDTO.Data.Length;i+=SPLIT\u大小)
{
byte[]splited=新字节[SPLIT_SIZE];
//数组.Copy(_calibrationViewDTOs.Data,i,拆分,0,拆分大小);
Buffer.BlockCopy(_calibrationHExDataDTO.Data,i,splited,0,SPLIT_SIZE);
列表。添加(拆分);
}
}
}

您可以将数据绑定到集合。为此,首先创建一个保存数据的类。据我所知,您的要求是每行只显示一个项目(大小为32字节),可能是字符串格式

public class dataset
{
    private string _dataline;
    public dataset(string _data)
    {
        _dataline = _data;
    }

    public string DataLine
    {
        get{ return _dataline;}
        set{ _dataline = value;}
    }
}
接下来,使用System.Collections命名空间定义维护数据的ObservableCollection。它将是一个依赖属性

public ObservableCollection<dataset> DataLines
{
    get{return (ObservableCollection<DataLine>) GetValue(DataLineProperty);}
    set{ setValue(DataLinesProperty, value);}
}
公共可观测收集数据线
{
get{return(ObservableCollection)GetValue(DataLineProperty);}
set{setValue(datalinesprroperty,value);}
}
请注意,“DataLine”类是ObservableCollection的数据类型。使用数据线名称访问集合本身。 接下来,用数据填充数据线集合。为了便于编写,我只需将字节[]放入字符串数组中

dataset ds;
string[] eightKbytes;           // this is your data
DataLines = new ObservableCollection<dataset>;
for( int i = 0; i < 250; i++)
{
    ds = new dataset(eightKbytes[i]);
    DataLines.Add(ds);
}
eightkGrid.ItemsSource = DataLines;   // Set the items source here
数据集ds;
字符串[]八个字节;//这是你的数据
数据线=新的可观测集合;
对于(int i=0;i<250;i++)
{
ds=新数据集(八个字节[i]);
数据线。添加(ds);
}
eightkGrid.ItemsSource=数据线;//在此处设置项目源
在XAML中定义数据网格

<DataGrid :x:Name="eightkGrid" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="My 32 ByteChunks", Binding="{Binding DataLine}"/>
    </DataGrid.Columns>
</DataGrid>

希望这符合你的要求