Hmmm.
Imports System.Windows
Imports System.Windows.Documents
Imports System.Windows.Media
Public Class Annotation
Inherits Adorner
Private _fill As Brush
Private _pen As Pen
Private _text As FormattedText
Private _annotationText as String
Public Sub New(ByVal adornedElement As UIElement, ByVal annotationText as String)
MyBase.New(adornedElement)
_annotationText = annotationText
_fill = New SolidColorBrush(Color.FromArgb(&H33, &HB0, &HC4, &HDE))
_fill.Freeze()
_pen = New Pen(Brushes.LightSteelBlue, 3.0)
_pen.Freeze()
_text = New FormattedText(_annotationText, Globalization.CultureInfo.InvariantCulture, FlowDirection.LeftToRight, New Typeface("Verdana"), 11.0, Brushes.Black)
Me.IsHitTestVisible = False
End Sub
Protected Overrides Sub OnRender(ByVal drawingContext As DrawingContext)
MyBase.OnRender(drawingContext)
Dim adornedRect As New Rect(MyBase.AdornedElement.RenderSize)
drawingContext.DrawRectangle(_fill, _pen, adornedRect)
drawingContext.DrawText(_text, New Point(0,0))
End Sub
End Class
Ve sonra bunu kullanmak istiyorsunuz: Muhtemelen bir adorner bu yapardın ben konumunu ve açıklama fiili görünümünü ayarlamak için bırakacaktır
Private Sub AddAnnotation(ByVal uie As UIElement, ByVal annotationText as String)
Dim annotation = New Annotation(uie)
Dim adornerLayer = AdornerLayer.GetAdornerLayer(uie, annotationText)
adornerLayer.Add(annotation)
End Sub
ama olsun fikir. Bu, özel denetimler dahil olmak üzere herhangi bir UIElement için için çalışacaktır.
Bu, Adorners'la yaptığım diğer çalışmalara dayanan bir manşet yanıtıydı. Yukarıdaki kod, derlenebilir veya olmayabilir. Açıklamaları düzenlemenin bir yolunu bulamadım, ancak "Me.IsHitTestVisible = False" satırını kaldırarak ve adında bulunan MouseUp olaylarını işleyerek kolayca yapabilirsiniz.
Yani kutunun dışında hiçbir şey DocumentViewer gibi ek açıklamalar denetimler için kullanılabilir hale getirilebilir, sence? Bu açıklama ve kod pasajı için teşekkürler, Bunu çalıştırmayı deneyebilir ve alabiliyor mu bakalım. – Vin
Varolan Ek Açıklamaları kullanmamayı düşünemiyorum, çünkü UIElement ile çalışan bir şeye ihtiyacınız var, çünkü bu (ve alt sınıflar) neredeyse tamamen UI geliştirmede uğraştığınız şey. Bazı üçüncü parti projeleri olabilir, ancak bunun farkında değilim. –