将控件与字节数组C#中的一个字节绑定的数据
本文关键字:字节 一个 数据 绑定 控件 字节数 数组 | 更新日期: 2023-09-27 18:22:25
我需要为字节数组中的一个字节绑定一个控件。例如,
byte[0] -> bind with numericupdown1
byte[2] -> bind withe numericupdown3
.
.
.
使得当byte[0]
改变时,numericupdown1
中的值也改变。。。
我可以将控件绑定到属性,但我无法使用字节数组实现上述要求
请帮我一下。
提前感谢
谨致问候,Isha
我不完全理解您要绑定什么以及在哪种技术/环境中绑定,但使用数组肯定无法做到这一点。这是因为数组在其元素发生更改时不会报告。
如果您在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;
您的UI将反映此更改(因为INotifyPropertyChanged),并显示该新值。
祝你好运!