//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------- namespace System.Activities.Presentation.View { using System.Activities.Presentation; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Media.Effects; class SearchToolTipAdorner : Adorner { Border tooltip; double scrollViewerToScreenDistance; public SearchToolTipAdorner(UIElement adornedElement, DesignerView designerView, string text) : base(adornedElement) { this.scrollViewerToScreenDistance = designerView.ScrollViewer.PointToScreen(new Point(0, 0)).Y;; tooltip = new Border { Background = new SolidColorBrush(WorkflowDesignerColors.DesignerViewBackgroundColor), BorderBrush = new SolidColorBrush(WorkflowDesignerColors.WorkflowViewElementBorderColor), BorderThickness = new Thickness(1), CornerRadius = new CornerRadius(4), Margin = new Thickness(10), Child = new TextBlock { Foreground = new SolidColorBrush(WorkflowDesignerColors.WorkflowViewElementCaptionColor), Margin = new Thickness(4, 0, 4, 0), MaxWidth = 300, Text = text, TextWrapping = TextWrapping.Wrap, TextTrimming = TextTrimming.CharacterEllipsis }, Effect = new DropShadowEffect { Color = Colors.Black, BlurRadius = 4, Opacity = 0.5 }, }; tooltip.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity)); } protected override void OnRender(DrawingContext drawingContext) { VisualBrush brush = new VisualBrush() { Visual = tooltip }; double adornerElementToVisibleScrollViewDistance = this.AdornedElement.PointToScreen(new Point(0, 0)).Y - this.scrollViewerToScreenDistance; double Y = adornerElementToVisibleScrollViewDistance < tooltip.DesiredSize.Height ? tooltip.DesiredSize.Height : -tooltip.DesiredSize.Height; Rect tooltipRect = new Rect(new Point(0, Y), tooltip.DesiredSize); Pen renderPen = new Pen(); drawingContext.DrawRectangle(brush, renderPen, tooltipRect); } } }