Установщик свойства RecvData не вызывается, когда вы просто изменяете его с помощью [indexer].У меня есть два варианта:
1) вручную вызвать OnPropertyChanged после изменения байтового массива с помощью индексатора:
private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)
{
byte i;
testbyte += 1;
for (i = 0; i < 40; i++)
{
RecvData[i] = testbyte;
}
OnPropertyChanged("RecvData");
}
2) создать оболочку для байтового массива, которая будет вызывать OnPropertyChanged автоматически привы изменяете массив с помощью индексатора:
public class ByteArrayWrapper : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
byte[] _array;
public byte[] Array
{
get
{
return _array;
}
set
{
if (_array != value)
{
_array = value;
OnPropertyChanged("Array");
}
}
}
public byte this[int index]
{
get
{
return _array[index];
}
set
{
_array[index] = value;
OnPropertyChanged("Array");
}
}
protected void OnPropertyChanged(string propertyName)
{
var changed = PropertyChanged;
if (changed != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
, а затем вместо работы с вашим байтовым массивом, как это:
public byte[] RecvData
{
// get/set
}
, вы должны использовать экземпляр вышеупомянутого класса:
public ByteArrayWrapper RecvData
{
// get/set
}
Другой код должен быть в порядке.Если привязка не работает, возможно, вам нужно привязать к RecvData.Array [i] вместо RecvData [i], пожалуйста, дайте мне знать, если это работает, поскольку я не могу проверить прямо сейчас.