public Node GetNode(Node root)
{
NSCmisTree cmis = this;
Stack<string> paths = new Stack<string> ();
do {
paths.Push(cmis.Name);
cmis = cmis.Parent;
} while (cmis != null);
Node node = root;
do {
string current = paths.Pop ();
if (current != node.Name) {
return null;
}
if (paths.Count == 0) {
return node;
}
node = node.Children.First (x => x.Name.Equals (paths.Peek()));
} while (true);
}
}
void OutlineSelected (NSCmisTree cmis, int selected) { InvokeOnMainThread (delegate { Node node = cmis.GetNode (Repo); if (node == null) { Console.WriteLine ("SelectedEvent find node Error"); } node.Selected = (selected != 0); DataSource.UpdateCmisTree (Repo); for (int i = 0; i < Outline.RowCount; ++i) { try { Outline.ReloadItem (Outline.ItemAtRow (i)); } catch (Exception e) { Console.WriteLine (e); } } }); }