【发布时间】:2018-10-05 10:21:50
【问题描述】:
我想在网格视图中将 byte[] 绑定到差异标签,但是当我更改计时器事件中的值时很奇怪,onPropertyChanged() 没有调用,结果标签没有更新byte[]。请帮我找出代码中的错误在哪里。我可以将一个字节与我列出的代码绑定,但似乎不适用于 byte[]。谢谢!
System.Timers.Timer testtimer;
Grid gridView;
byte[] _recvdata;
byte testbyte;
public byte[] RecvData
{
get
{
return _recvdata;
}
set
{
if (_recvdata != value)
{
_recvdata = value;
OnPropertyChanged("RecvData");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected override void OnPropertyChanged(string propertyName)
{
var changed = PropertyChanged;
if (changed != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public DevicePage(IDevice currDevice)
{
device = currDevice;
this.Title = "Status";
testtimer = new System.Timers.Timer();
testtimer.Interval = 1000;
testtimer.Elapsed += OnTimedEvent;
testtimer.Enabled = true;
gridView = new Grid();
RecvData = new byte[40];
for (byte i = 0; i < 40;i++)
{
string st;
var lb = new Label ();
st = "RecvData[" + i + "]";
lb.SetBinding(Label.TextProperty, st);
lb.BindingContext = this;
gridView.Children.Add(lb, 0, i);
}
this.Content = gridView;
}
private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)
{
byte i;
testbyte += 1;
for (i = 0; i < 40; i++)
{
RecvData[i] = testbyte;
}
}
【问题讨论】:
-
我发现如果我执行“RecvData= somebytearray”这将起作用。但是如何更新依赖于数组中的一个元素?
-
您找到解决方案了吗?
标签: xamarin binding inotifypropertychanged