【发布时间】:2013-03-11 03:14:14
【问题描述】:
我正在从头开始编写一个自定义控件(使用Graphics),它将代表一组列,每个列都有一个单元格列表,很像网格视图,除了它会有一些自定义功能。
我很难弄清楚如何管理所有数据绑定问题。我希望这个网格有一个DataSource 属性,它基本上需要是一些对象的锯齿状数组(2D),每个对象都需要绑定到控件中的一个单元格。我仍然不确定这些对象中的每一个都有哪些属性,到目前为止我只使用文本。我一直在尝试让我的模型实现这个接口:
public interface IDiagramDataSource
{
IBindingList Columns { get; }
}
然后让每一列实现这个:
public interface IDiagramColumnDataSource : INotifyPropertyChanged
{
IBindingList Cells { get; }
}
但我仍然很难找出使所有这些对象与网格中的相应对象保持同步的最佳方法。我希望能够将所有绑定的混乱放在一个独立的班级中,但不知道如何做到这一点。现在,只要数据源发生任何变化,我就会重新绘制整个东西,但我希望最终能够识别哪个单元格中的哪个属性或哪个列中的哪个单元格发生了变化,以便我只能更新我的网格中的必要项目。
当您希望控件可绑定到嵌套列表时,是否可以遵循任何模式?我猜是因为DataGridView 控件会这样做。
【问题讨论】:
-
a lot like a grid view except this will have some custom features.- 请问这些自定义功能是什么? -
它实际上就像一个流程图。每个单元格都有一个箭头,指向右侧最近的非空单元格(因此它可能会在其他列的顶部展开)。您将能够上下移动单元格(而不是整行)。可能还有其他我不知道的事情。
-
"it will actually be"听起来您还没有深入了解这一点。只是一个建议..您是否为此考虑过WPF?在 WPF 中做这样一个高级的事情(从 UI 的角度)可能会容易得多。
标签: c# winforms data-binding