我有一个可能非常大的字节数组。我想将其绑定到与柱的固定大小的网格,让说10如何将字节数组显示到网格中?
所以第一个10个字节将在第一行上,在接下来的10个字节将在第二行......直到数组的末尾。
我需要能够编辑任何字节,并且这需要被反射到阵列中。我的字节数组需要保留一个简单的字节数组。
所有,使用WPF C#。
谢谢您的帮助!
编辑:
事实上,AS-CII的解决方案不保存更新的值到原来的数组。 我修改的例子中,以满足此条件:
<DataGrid AutoGenerateColumns="False" Name="dataGrid1" ItemsSource="{Binding Bytes}" ColumnWidth="1*">
<DataGrid.Columns>
<DataGridTextColumn Header="1" Binding="{Binding [0]}"></DataGridTextColumn>
<DataGridTextColumn Header="2" Binding="{Binding [1]}"></DataGridTextColumn>
<DataGridTextColumn Header="3" Binding="{Binding [2]}"></DataGridTextColumn>
<DataGridTextColumn Header="4" Binding="{Binding [3]}"></DataGridTextColumn>
<DataGridTextColumn Header="5" Binding="{Binding [4]}"></DataGridTextColumn>
<DataGridTextColumn Header="6" Binding="{Binding [5]}"></DataGridTextColumn>
<DataGridTextColumn Header="7" Binding="{Binding [6]}"></DataGridTextColumn>
<DataGridTextColumn Header="8" Binding="{Binding [7]}"></DataGridTextColumn>
<DataGridTextColumn Header="9" Binding="{Binding [8]}"></DataGridTextColumn>
<DataGridTextColumn Header="10" Binding="{Binding [9]}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
通知的唯一的变化是阵列[0] [0]
public struct ArrayPiece<T>
{
private T[] m_Data;
private int m_Offset;
private int m_Length;
public T this[int index] {
get{
return m_Length > index? m_Data[m_Offset + index] : default(T);
}
set{
if(m_Length > index)
m_Data[m_Offset + index] = value;
}
}
public ArrayPiece(T[] array, int offset, int length)
: this()
{
m_Data = array;
m_Offset = offset;
m_Length = length;
}
}
而这是新的ArrayPiece。
有了这些变化的时候,在UI中,一个值被改变时,将其更新为原始数组。
有一个问题:如果最后ArrayPiece仅具有8个元件,而不是图10中,2人给出的元件将在数据网格显示0直接使用阵列时不同。我试图实现长度和LongLength属性没有成功。如果我抛出索引,它不会被捕获。
谢谢!
你能定义非常大的 – 2010-10-20 20:29:16
好吧,没那么大,<1000字节 – Dist01 2010-10-20 22:00:49