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(); } } }
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); }