Ich versuche, eine ungewöhnliche Verwendung eines Adorner zu erreichen. Wenn Sie mit der Maus über eine RichTextBox fahren, erscheint darüber ein Adorner (siehe Abbildung unten), mit dem Sie einer ListBox im Adorner eine Liste von Strings hinzufügen können. Dies wird verwendet, um "Tags" (à la Flickr) zu der Passage hinzuzufügen, die in dem geschmückten Element enthalten ist.WPF Adorner mit Kontrollen innerhalb
Erstens: Ist das überhaupt möglich?
Die meisten Beispiele von Adorners zeigen, wie die OnRender-Methode von Adorner überschrieben wird, um triviale Dinge wie das Zeichnen von Formen auszuführen. Ich konnte damit eine Reihe von Rechtecken erzeugen, die den grauen Rand des Adorner erzeugt, der auch automatisch die Größe ändert, wenn die Höhe von RichTextBox aufgrund zusätzlicher Linien zunimmt, die Text hinzugefügt wird, während der Adorner angezeigt wird.
protected override void OnRender(DrawingContext drawingContext)
{
SolidColorBrush grayBrush = new SolidColorBrush();
grayBrush.Color = Color.FromRgb(153, 153, 153);
// left
drawingContext.DrawRectangle(grayBrush, null, new System.Windows.Rect(1, 1, 5, ActualHeight));
// right
drawingContext.DrawRectangle(grayBrush, null, new System.Windows.Rect(ActualWidth - 6, 1, 5, ActualHeight));
//bottom
drawingContext.DrawRectangle(grayBrush, null, new System.Windows.Rect(1, ActualHeight, ActualWidth - 2, 5));
// for reasons unimportant to this example the top gray bar is rendered as part of the RichTextBox
}
Das Hinzufügen von Steuerelementen ist jedoch etwas problematischer. Im Allgemeinen erfordert WPFs Adorner das Hinzufügen von untergeordneten Steuerelementen im Code anstelle von XAML. Mit der in beschriebenen Technik habe ich gelernt, wie man einem Adorner innerhalb des Adorner-Initialisierers untergeordnete Steuerelemente (wie eine TextBox) hinzufügt.
Das Problem ist jedoch die Platzierung dieser Steuerelemente innerhalb der Adorner.
Wenn ich ein Gitter mit einem grauen Hintergrund erstellen und es an der Unterseite des Adorner positionieren könnte, sollte ich gut gehen. Ich würde (hoffentlich) davon ausgehen, dass Dinge wie die automatische Größenanpassung der Adorner basierend auf der Größe des Gitters, wenn Tags hinzugefügt werden, automatisch auftreten würden.
Kurz, vorausgesetzt, dies möglich ist, kann jemand eine Möglichkeit zu schaffen, diesen unteren Tagging Steuerbereich innerhalb die Adorner und Positionierung relativ zu dem Boden des Adorner (empfehlen, die möglicherweise als RichTextBox, um die Größe können Inhalt ändert sich)?
siehe auch http://social.msdn.microsoft.com/Forums/en-US/ wpf/thread/81eca7d5-88d7-477a-8cdb-cfb9e8b75379/ –
Nicht naheliegend, gut entdeckt – Basic