public TreeViewItemWithIconViewModel(FilesTreeViewItem model, int stashId, FileIconsService fileIconService, VisualStudioGitService gitService) { _internalModel = model; _fileIconService = fileIconService; _gitService = gitService; Source = IsFile ? _fileIconService.GetFileIcon("." + FileExtension) : _fileIconService.GetFolderIcon(IsExpanded); var childNodes = model.Items.Select(m => new TreeViewItemWithIconViewModel(m, stashId, fileIconService, gitService)).ToList(); Items = new ObservableCollection <TreeViewItemWithIconViewModel>(childNodes); CompareWithPreviousVersionCommand = new DelegateCommand(o => { var treeItem = o as TreeViewItemWithIconViewModel; var filePath = treeItem?.FullPath; var fileName = treeItem?.Text; var isNew = treeItem?.IsNew ?? false; var isStaged = treeItem?.IsStaged ?? false; _gitService.RunDiff(stashId, filePath, fileName, isNew, isStaged); }); }
private void TreeView_ExpandedOrCollapsed(object sender, RoutedEventArgs e) { var item = e.OriginalSource as TreeViewItem; if (item?.DataContext is TreeViewItemWithIcon itemWithIcon && !itemWithIcon.IsFile) { itemWithIcon.Source = _fileIconsService.GetFolderIcon(item.IsExpanded); } }