Estoy tratando de lograr un uso inusual de un Adorner. Cuando pase el mouse sobre un cuadro de texto enriquecido, aparecerá un adorno (ver el diagrama a continuación) encima de él, que le permitirá agregar una lista de cadenas a un cuadro de lista contenido en Adorner. Esto se usa para agregar "etiquetas" (à la Flickr) al pasaje contenido en el elemento adornado.Decodificador WPF con controles dentro
En primer lugar: ¿es esto posible?
La mayoría de los ejemplos de Adorners muestran cómo anular el método OnRender de Adorner para hacer cosas triviales como dibujar formas. Pude usar esto para representar un conjunto de rectángulos que crea el borde gris del Adorner, que también cambia de tamaño automáticamente si la altura de RichTextBox aumenta debido a las líneas adicionales que se agregan texto mientras se muestra Adorner.
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
}
Sin embargo, agregar controles es un poco más problemático. En general, el adorno de WPF requiere agregar controles secundarios en código en lugar de XAML. Usando la técnica descrita en DrawingContext adorner - possible to draw stackpanel?, aprendí cómo agregar controles secundarios (como un TextBox) a Adorner sin ningún problema dentro del inicializador de Adorner.
El problema, sin embargo, es la ubicación de esos controles dentro de Adorner.
Si pudiera crear una cuadrícula con un fondo gris y colocarla en la parte inferior de Adorner, estaría bien. Asumiría (espero) que cosas como el cambio de tamaño automático del Adorner basado en el tamaño cambiante de ese Grid a medida que se agregan las etiquetas, pasarían automáticamente.
En resumen, suponiendo que esto es posible, cualquier persona puede recomendar una manera de crear esta zona de control de marcado inferior dentro la Adorner y posicionándola con respecto a la parte inferior de Adorner (que puede posiblemente tener que cambiar el tamaño como el RichTextBox el contenido cambia de tamaño)?
ver también http://social.msdn.microsoft.com/Forums/en-US/ wpf/thread/81eca7d5-88d7-477a-8cdb-cfb9e8b75379/ –
No es obvio. Bien descubierto. – Basic