gpt4 book ai didi

.net - 数据绑定(bind)到实现 IEnumerable 的对象的属性

转载 作者:行者123 更新时间:2023-12-02 21:29:44 24 4
gpt4 key购买 nike

我正在尝试将简单的数据绑定(bind)到对象的实例。像这样的事情:

public class Foo : INotifyPropertyChanged
{
private int bar;
public int Bar { /* snip code to get, set, and fire event */ }

public event PropertyChangedEventHandler PropertyChanged;
}

// Code from main form
public Form1()
{
InitializeComponent();
Foo foo = new Foo();
label1.DataBindings.Add("Text", foo, "Bar");
}

这一直有效,直到我修改 Foo 类以实现 IEnumerable,其中 T 是 int、字符串等。此时,当我尝试添加数据绑定(bind)时,我收到 ArgumentException:无法绑定(bind)到数据源上的属性或列 Bar。

就我而言,我不关心枚举,我只想绑定(bind)到对象的不可枚举属性。有什么干净的方法可以做到这一点吗?在实际代码中,我的类没有实现 IEnumerable,而链上几层的基类却实现了。

目前最好的解决方法是将对象放入仅包含单个项目的绑定(bind)列表中,然后绑定(bind)到该项目。

这里有两个相关问题:

最佳答案

您可以创建一个包含在您的类中的子类,该子类继承自 enumerable 并绑定(bind)到它。有点像这样:

class A : IEnumerable { ... }
class Foo : A
{
private B _Abar = new B();
public B ABar
{
get { return _Abar; }
}
}

class B : INotifyPropertyChanged
{
public int Bar { ... }
...
}

public Form1()
{
InitializeComponent();
Foo foo = new Foo();
label1.DataBindings.Add("Text", foo.ABar, "Bar");
}

这应该可以解决问题。

关于.net - 数据绑定(bind)到实现 IEnumerable 的对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1336395/

24 4 0