Exemplo n.º 1
0
		public TreeViewImpl(ITreeViewServiceImpl treeViewService, IThemeService themeService, IClassificationFormatMapService classificationFormatMapService, Guid guid, TreeViewOptions options) {
			Guid = guid;
			this.treeViewService = treeViewService;
			treeViewListener = options.TreeViewListener;
			classificationFormatMap = classificationFormatMapService.GetClassificationFormatMap(AppearanceCategoryConstants.UIMisc);
			classificationFormatMap.ClassificationFormatMappingChanged += ClassificationFormatMap_ClassificationFormatMappingChanged;
			foregroundBrushResourceKey = options.ForegroundBrushResourceKey ?? "TreeViewForeground";
			sharpTreeView = new SharpTreeView();
			sharpTreeView.SelectionChanged += SharpTreeView_SelectionChanged;
			sharpTreeView.CanDragAndDrop = options.CanDragAndDrop;
			sharpTreeView.AllowDrop = options.AllowDrop;
			sharpTreeView.AllowDropOrder = options.AllowDrop;
			VirtualizingStackPanel.SetIsVirtualizing(sharpTreeView, options.IsVirtualizing);
			VirtualizingStackPanel.SetVirtualizationMode(sharpTreeView, options.VirtualizationMode);
			sharpTreeView.SelectionMode = options.SelectionMode;
			sharpTreeView.BorderThickness = new Thickness(0);
			sharpTreeView.ShowRoot = false;
			sharpTreeView.ShowLines = false;

			if (options.IsGridView) {
				sharpTreeView.SetResourceReference(ItemsControl.ItemContainerStyleProperty, SharpGridView.ItemContainerStyleKey);
				sharpTreeView.SetResourceReference(FrameworkElement.StyleProperty, "SharpTreeViewGridViewStyle");
			}
			else {
				// Clear the value set by the constructor. This is required or our style won't be used.
				sharpTreeView.ClearValue(ItemsControl.ItemContainerStyleProperty);
				sharpTreeView.SetResourceReference(FrameworkElement.StyleProperty, typeof(SharpTreeView));
			}

			sharpTreeView.GetPreviewInsideTextBackground = () => themeService.Theme.GetColor(ColorType.SystemColorsHighlight).Background;
			sharpTreeView.GetPreviewInsideForeground = () => themeService.Theme.GetColor(ColorType.SystemColorsHighlightText).Foreground;

			// Add the root at the end since Create() requires some stuff to have been initialized
			root = Create(options.RootNode ?? new TreeNodeDataImpl(new Guid(DocumentTreeViewConstants.ROOT_NODE_GUID)));
			sharpTreeView.Root = root.Node;
		}