static void OnFSExpanded(object sender, RoutedEventArgs e)
        {
            // Only react to the Selected event raised by the TreeViewItem
            // whose IsSelected property was modified. Ignore all ancestors
            // who are merely reporting that a descendant's Selected fired.
            if (!Object.ReferenceEquals(sender, e.OriginalSource))
            {
                return;
            }

            TreeViewItem tvi = e.OriginalSource as TreeViewItem;

            if (tvi != null)
            {
                tvi.IsSelected = true;
                FSModel tviFSM = tvi.Header as FSModel;

                if (tviFSM != null)
                {
                    if (tviFSM.fsType == "Server" || tviFSM.fsType == "file")
                    {
                        return;
                    }

                    try
                    {
                        DateTime lastWriteTime = Directory.GetLastWriteTime(tviFSM.Path);
                        if (tviFSM.lastModified == lastWriteTime && tviFSM.Children[0] != null)
                        {
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        if (ex is ArgumentException || ex is PathTooLongException || ex is UnauthorizedAccessException || ex is IOException)
                        {
                            return;
                        }
                        else
                        {
                            throw;
                        }
                    }

                    tviFSM.GetChildren();
                }
            }
        }
Ejemplo n.º 2
0
        public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;
            FSModel          fsm     = item as FSModel;

            if (element != null && fsm != null)
            {
                if (fsm.fsType == "Server")
                {
                    return(element.FindResource("FSServerTemplate") as DataTemplate);
                }
                if (fsm.fsType == "Drive")
                {
                    return(element.FindResource("FSDriveTemplate") as DataTemplate);
                }
                if (fsm.fsType == "Folder")
                {
                    return(element.FindResource("FSFolderTemplate") as DataTemplate);
                }
            }
            return(element.FindResource("FSFileTemplate") as DataTemplate);
        }