void UpdateItem(SourcesListItem item)
 {
     if (!updating)
     {
         outlineView.ReloadItem(item);
         if (item.isSelected)
         {
             outlineView.SelectRow(outlineView.RowForItem(item), true);
         }
         else
         {
             outlineView.DeselectRow(outlineView.RowForItem(item));
         }
     }
 }
        IViewItem IView.AddItem(object datum, IViewItem parent)
        {
            var item = new SourcesListItem()
            {
                datum      = datum,
                updater    = UpdateItem,
                viewEvents = viewEvents,
                parent     = parent as SourcesListItem,
            };

            if (item.parent != null)
            {
                item.parent.items.Add(item);
            }
            else
            {
                dataSource.Items.Add(item);
            }
            UpdateItem(item);
            return(item);
        }