您好我正在编写我的第一个.net gui。我想知道是否有一些特定的方法我需要应用于我的poco对象,以便它们可绑定到usercontrol。我有一些对象,但我似乎无法将它们绑定到我的usercontrol。
我在某处读到了他们需要实现IBindable但我无法摆脱某人已经消除了我必须输入到我所有类中的所有重复代码的感觉。有没有办法轻松绑定这些或我将不得不使用数据集等,以轻松地使此绑定工作。我对数据集极度厌恶,请提出其他一些不错的选择; - )
我正在尝试从devexpress工具包绑定到usercontrol。
答案 0 :(得分:1)
哪种架构?
对于单向绑定,除了公共属性之外,您不需要任何其他内容 - 对于任何定制数据类型(TypeConverter
等),可能需要一些struct
实现。
对于完整的双向绑定,您需要一个事件实现 - 任何一个:
有关INotifyPropertyChanged
实现的示例(请注意,您可能希望移动一些代码以便重复使用):
public class Foo : INotifyPropertyChanged
{
private string bar;
public string Bar
{
get { return bar; }
set { UpdateField(ref bar, value, "Bar"); }
}
// other properties...
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null) PropertyChanged(this,
new PropertyChangedEventArgs(propertyName));
}
protected bool UpdateField<T>(ref T field, T value,
string propertyName)
{
if (!EqualityComparer<T>.Default.Equals(field, value))
{
field = value;
OnPropertyChanged(propertyName);
return true;
}
return false;
}
}
要绑定集数据(网格等),最简单的方法是使用泛型;基本上, minumum 是IList
- 但您从public T this[int index]
索引器获得了额外的元数据 - List<T>
,Collection<T>
等都有。更多 - BindingList<T>
实现IBindingList
允许基于收集的通知事件(但仅限INotifyPropertyChanged
- 而不是FooChanged
模式)。
答案 1 :(得分:0)
使用WPF,您需要INotifyPropertyChanged
或Dependency Properties。另请查看INotifyCollectionChanged
的集合。
答案 2 :(得分:0)
BindingList可用于绑定到通用对象列表。