//        void Update()
//        {
//            if (TreeModel != null && TreeModel.IsDirty) TreeModel.Refresh();
//            Repaint();
//        }

        public void SelectionChanged(GraphItemViewModel selected)
        {
            if (TreeModel == null)
            {
                return;
            }
            var selectedData = selected == null ? null : selected.DataObject;

            if (selectedData != TreeModel.SelectedData)
            {
                var item = TreeModel.TreeData.FirstOrDefault(_ => _.Data == selectedData);
                if (item != null)
                {
                    TreeModel.SelectedIndex = item.Index;
                    TreeModel.ExpandPathTo(item);
                    TreeModel.ScrollToItem(item);
                }
                else
                {
                    TreeModel.SelectedIndex = -1;
                }
            }
        }