Ich habe einen Adorner, der einen Border schmückt (siehe Screenshot unten). Das MouseDown Event für den Adorner wird jedoch nur ausgelöst, wenn man auf ein Element im Adorner klickt. Ich benötige das MouseDown Event, wenn ich auf einen beliebigen Ort im Adorner oberhalb des geschmückten Elements klicke. Wie kann das gemacht werden? Muss ich dem Adorner eine transparente Kontrolle hinzufügen oder gibt es dafür einen anderen Weg? Danke für jede Hilfe!WPF: Adorner Hit Testing/MouseDown Event
Screenshot und VS 2008 Projekt: http://cid-0432ee4cfe9c26a0.skydrive.live.com/browse.aspx/%C3%96ffentlich?uc=2
Der Code für die 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);
}
}
danke für deine Antwort, aber wie setzt du einen Pinsel auf einen Adorner? drawingcontext und fülle die ganze rendize? –
ok, hab es (benutze einfach drawingcontext, um ein transparentes Rechteck zu zeichnen, nichts besonderes) und es funktioniert gut! vielen Dank! frage mich immer noch, ob du wirklich ein extra Rechteck dafür brauchst. Wie auch immer, es funktioniert jetzt einfach. –