gpt4 book ai didi

c# - 如何为控件的嵌套属性创建数据绑定(bind)?

转载 作者:行者123 更新时间:2023-11-30 13:06:51 24 4
gpt4 key购买 nike

考虑以下几点:

public interface IHaveProperties
{
public MyProperties Properties { get; set; }
}

public class MyControlA : SomeWinFormsControl, IHaveProperties { ... }

public class MyControlB : SomeOtherWinFormsControl, IHaveProperties { ... }

public class MyProperties
{
public int Foo { get; set; }
public string Bar { get; set; }
public double Baz { get; set; }
...
}

这允许我们将相同的附加属性添加到许多不同的控件,这些控件的 base class我们不能修改,也不能保存/加载属性集。

现在我们有大约一打不同的 MyControlX,我们已经意识到能够将数据绑定(bind)到例如 Properties.Bar 会很好。

显然我们可以这样做:

public interface IHaveProperties
{
public MyProperties Properties { get; set; }
public string Bar { get; set; }
}

public class MyControlA : SomeWinFormsControl, IHaveProperties
{
public string Bar
{
get { return Properties.Bar; }
set { Properties.Bar = value; }
}
}

...但是我们必须在十几个控件中的每一个中放置相同的代码,这看起来有点臭。

我们试过这个:

// Example: bind control's property to nested datasource property
myTextBox.DataBindings.Add(new Binding("Text", myDataSet, "myDataTable.someColumn"))
// works!

// bind control's (nested) Properties.Bar to datasource
myTextBox.DataBindings.Add(new Binding("Properties.Bar", someObject, "AProperty"))
// throws ArgumentException!

是否有某种方法可以通过以某种方式构造绑定(bind)或修改 MyProperties 类来绑定(bind)到 myControl.Properties.Bar,而不是对所有控制?

最佳答案

不应该是这样吗

TextBox.DataBindings.Add(new Binding("Text", someObject, "Properties.Bar"));

关于c# - 如何为控件的嵌套属性创建数据绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24252538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com