Вот пример:
/// <summary>
/// Collection of SednaTreeViewItems used to populate the SednaTreeView.
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public List<SednaTreeViewItem> TreeNodes
{
get { return treeNodes; }
set
{
ultraTree.Nodes.Clear();
treeNodes = value;
foreach (var item in treeNodes)
{
UltraTreeNode node = new UltraTreeNode(item.ValueMember, item.DisplayMember);
ultraTree.Nodes.Add(node);
}
if (treeNodes.Count() > 0)
ultraTree.ActiveNode = ultraTree.Nodes[0];
}
}
/// <summary>
/// SednaTreeViewItem that is currently selected in the SednaTreeView.
/// </summary>
public SednaTreeViewItem SelectedItem
{
get
{
if (ultraTree.SelectedNodes != null)
{
var node = ultraTree.SelectedNodes[0];
SednaTreeViewItem item = new SednaTreeViewItem(node.Key, node.Text);
return item;
}
else
return null;
}
set
{
ultraTree.ActiveNode = ultraTree.Nodes[value.ValueMember];
}
}
Я бы хотел использовать свой контроль таким образом. Например, кто-то хочет установить выбранный узел представления дерева во время выполнения, я хотел бы что-то вроде:
treeViewInvestors.SelectedItem = treeViewInvestor.TreeNodes[userIdKey];
Где userIdKey - это уникальный ключ, который уже находится за кулисами.
В принципе, есть ли способ создать индексатор "[]" для моего свойства?