Mam Adornera, który urzeka Granicę (zobacz zrzut ekranu poniżej). Event MouseDown dla Adornera jest jednak podnoszony tylko po kliknięciu elementu w adornerze. Potrzebuję zdarzenia MouseDown do podniesienia, klikając na dowolne miejsce w adornerze nad ozdobnym elementem. Jak to zrobić? Czy muszę dodać przejrzystą kontrolę w adornerze, czy jest na to inny sposób? Dzięki za pomoc!WPF: Adorner Hit Testing/MouseDown Event
ekranu i VS 2008 Projekt: http://cid-0432ee4cfe9c26a0.skydrive.live.com/browse.aspx/%C3%96ffentlich?uc=2
Kodeks dla 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);
}
}
dzięki za odpowiedź, ale jak ustawić pędzel na adornerze? drawingcontext i wypełnić cały rendersize? –
ok, rozumiem (użyj rysunku rysunku, aby narysować przezroczysty prostokąt, nic specjalnego) i działa dobrze! Dziękuję Ci bardzo! wciąż zastanawiasz się, czy naprawdę potrzebujesz do tego dodatkowego prostokąta. tak czy inaczej, teraz po prostu działa. –