I have got closer to cleaning up the BindingList<> problem:
using System.Collections.Generic;
using System.ComponentModel;
namespace WindowsApplicationDataBinding
{
public class Node
{
private string _Name;
public string Name{ get{return _Name;} set{_Name = Name;}}
private int _Age;
public int Age
{
get { return _Age; }
set { _Age = value; }
}
public Node(string name, int age)
{
_Name = name;
_Age = age;
}
public string Birthday { get { return “Unknown”; } }
}
public class BindingClass : BindingList, ITypedList
{
private PropertyDescriptorCollection _Description = null;
#region ITypedList Members
public PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors)
{
if (_Description == null)
{
_Description = TypeDescriptor.GetProperties(typeof(Node)).Sort(new string[] {“Name”, “Age”});
}
return _Description;
}
public string GetListName(PropertyDescriptor[] listAccessors)
{
return typeof(Node).Name;
}
#endregion
}
}
This version allows the application to specify the sort order of the columns.
The next step is to move this into an attribute based version.
It would also be useful if the description and hidden could be set on the same attribute.
What I want is to mark node as:
[BindingDetails(Description=”First Name”,Order=1,Hidden=False)]
string Name …