Tengo un adorno que adorna un borde (vea la captura de pantalla a continuación). Sin embargo, el evento MouseDown para Adorner solo se levanta cuando se hace clic en un elemento del adorno. Necesito que se levante el Evento MouseDown, al hacer clic en cualquier lugar del adorno encima del elemento adornado. ¿Cómo puede hacerse esto? ¿Tengo que agregar un control transparente en el adorno o hay otra forma de hacerlo? ¡Gracias por cualquier ayuda!WPF: Adorner Hit Testing/MouseDown Evento
pantalla y VS 2008 Proyecto: http://cid-0432ee4cfe9c26a0.skydrive.live.com/browse.aspx/%C3%96ffentlich?uc=2
El Código para la adorner:
class myAdorner : Adorner
{
public myAdorner(UIElement element)
: base(element)
{
this.MouseDown += new System.Windows.Input.MouseButtonEventHandler(myAdorner_MouseDown);
}
void myAdorner_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
MessageBox.Show("ok");
}
// Draws two rectangles: one in the upper-left and another one in the lower-right corner
protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
{
Size size = this.AdornedElement.RenderSize;
Rect r1 = new Rect(0.5, 0.5, 20, 20);
Rect r4 = new Rect(size.Width - 20.5, size.Height - 20.5, 20, 20);
SolidColorBrush brush = new SolidColorBrush(Colors.AliceBlue);
Pen pen = new Pen(Brushes.Black, 1);
drawingContext.DrawRectangle(brush, pen, r1);
drawingContext.DrawRectangle(brush, pen, r4);
}
}
gracias por su respuesta, pero ¿cómo se establece un pincel en un adorno? ¿dibujarcontexto y rellenar todo el rendersize? –
ok, lo obtuve (solo use drawingcontext para dibujar un rectángulo transparente, nada especial) ¡y funciona bien! ¡muchas gracias! Todavía me pregunto si realmente necesitas un rectángulo extra para esto. de todos modos, ahora solo funciona. –