如何使用一种方法在网格 C# WPF 中添加行 [重复]
Posted
技术标签:
【中文标题】如何使用一种方法在网格 C# WPF 中添加行 [重复]【英文标题】:How to use a method to add rows in a grid C# WPF [duplicate] 【发布时间】:2021-07-23 04:03:49 【问题描述】:我是 WPF 和 C# 编码的新手。我正在尝试拆分 8000 个字节并每行显示 32 个字节。我编写了一个 SPLITLIST 方法,但不知道如何将它连接到我的 dataGrid 并创建 250(8000 字节/32 字节)单独的行。下面是我的方法:
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);
【问题讨论】:
【参考方案1】:您可以将数据绑定到集合。为此,首先创建一个包含您的数据的类。据我了解您的要求,您只想以字符串格式每行显示一个项目(大小为 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
getreturn (ObservableCollection<DataLine>) GetValue(DataLineProperty);
set setValue(DataLinesProperty, value);
请注意,“DataLine”类是 ObservableCollection 的数据类型。使用 DataLines 名称访问集合本身。 接下来用数据填充您的 DataLines 集合。为了简化写作,我只是将你的 byte[] 放入一个字符串数组中
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
在 XAML 中定义 DataGrid
<DataGrid :x:Name="eightkGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="My 32 ByteChunks", Binding="Binding DataLine"/>
</DataGrid.Columns>
</DataGrid>
希望能满足你的要求。
【讨论】:
以上是关于如何使用一种方法在网格 C# WPF 中添加行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章