我需要为字节数组中的一个字节绑定一个控件。例如,
byte[0] -> bind with numericupdown1
byte[2] -> bind withe numericupdown3
.
.
.
这样当byte[0]
发生变化时,numericupdown1
中的值也会发生变化......
我能够将控件绑定到属性,但我无法使用字节数组
实现上述要求请帮助我。
提前致谢
此致 宵
答案 0 :(得分:2)
我不完全明白你的约束力以及在哪种技术/环境中,但是你绝对不能用数组做到这一点。 这是因为数组不会报告其元素何时发生变化。
如果您使用的是WPF或Silverlight,并且要将数组绑定到UI中的某种列表,请尝试使用ObservableCollection。
如果您在WinForms中并且只是手动将元素绑定到某些控件,则需要为每个元素创建包装器。 这很简单:只需创建一个简单的类,如:
public sealed class ValueWrapper : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ValueWrapper(byte initialValue) {
_value = initialValue;
}
private byte _value;
public byte Value {
get { return _value; }
set {
_value = value;
OnPropertyChanged("Value");
}
}
private void OnPropertyChanged(String name)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
现在,您希望将字节数组转换为包装器数组。如果您使用LINQ:
,这是微不足道的var values = myBytes.Select(x=>new ValueWrapper(x)).ToArray();
现在,绑定包装器对象的Value属性,而不是字节(使用Binding类)
当你改变这些值时:
values[0].Value = 122;
您的用户界面将反映此更改(因为INotifyProperyChanged)并将显示该新值。
祝你好运!