这与我的另一个问题有关,不幸的是,我很难在我的标题中总结这个问题——所以请多多包涵。
我创建了一个名为的数据绑定类Folder
,它实现了一个ITreeItem
接口并继承自BindingList<ITreeItem>
. 我有第二个类 ,TreeLeaf
它是树中的一片叶子,一个不能包含更多子项的终点。
目的是能够数据绑定到 aFolder
并让数据绑定遍历文件夹树(和 n 级子文件夹)和叶子。但是,数据绑定不会下降到 a 的基础 BindingList 中Folder
,因此在数据Folder
绑定时似乎没有子项。
到目前为止,看起来数据绑定正在将文件ITreeItem
夹Folder
作为ITreeItem
.
我的问题是:我如何才能暴露文件夹既是实现ITreeItem
又是后代的数据绑定BindingList<ITreeItem>
;或者我怎样才能挂钩数据绑定以帮助它走下结构?
这是迄今为止的实现示例:
using System.ComponentModel;
using System.Windows.Forms;
namespace TreeData
{
public interface ITreeItem
{
string Name { get; set; }
}
class TreeLeaf : ITreeItem
{
public TreeLeaf(string name)
{
Name = name;
}
public string Name { get; set; }
}
class Folder : BindingList<ITreeItem>, ITreeItem
{
public Folder(string name)
{
Name = name;
}
public string Name { get; set; }
}
class Example
{
public Example()
{
var rootFolder = new Folder("Root");
var subFolder1 = new Folder("Folder1");
var subFolder2 = new Folder("Folder2");
rootFolder.Add(subFolder1);
rootFolder.Add(subFolder2);
subFolder1.Add(new TreeLeaf("Item1"));
subFolder1.Add(new TreeLeaf("Item2"));
subFolder2.Add(new TreeLeaf("Item3"));
subFolder2.Add(new TreeLeaf("Item4"));
var treeDataSource = new BindingSource();
treeDataSource.DataSource = rootFolder;
// For my purposes the 'bindableControl' is
// an Infragistics UltraTree or UltraGrid.
//bindableControl.DataSource = treeDataSource;
}
}
}