c# - 如何使用一种方法在网格 C# WPF 中添加行
问题描述
我是 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);
}
}
}
解决方案
您可以将数据绑定到集合。为此,首先创建一个保存数据的类。据我了解您的要求,您只想以字符串格式每行显示一个项目(大小为 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);}
}
请注意,“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>
希望能满足你的要求。
推荐阅读
- wordpress - 本地主机上的 Wordpress,图像路径错误
- python - KNeighbors Regressor .predict() 函数在使用 weights='distance' 训练时给出了令人怀疑的完美结果?
- r - 给定一个美国州的形状文件,找到一个县的形状文件
- c# - 当 WCF 应用程序在 Windows 7 上作为 Windows 服务托管时,找不到证书
- javascript - 在JS中格式化输入类型=“文本”
- reporting-services - SSRS 根据数据集字段创建尽可能多的表(使用一个数据集)
- spring - 使用 Spring Integration DSL 读取 Tibco EMS 主题
- c++ - 从 'float*' 到 'int' 的错误无效转换 [-fpermissive]
- python - Graphlab 和 SFrame
- ios - Xcode Storyboard 使按钮高度等于底部布局指南(或安全区域下方的空间)+ 常量?