У меня есть Adorner, который украшает границу (см. Скриншот ниже). Событие MouseDown для Adorner, тем не менее, увеличивается только при нажатии на элемент в adorner. Мне нужно, чтобы событие MouseDown было поднято при нажатии на любое место в adorner над украшенным элементом. Как это может быть сделано? Должен ли я добавить прозрачный элемент управления в adorner или есть другой способ для этого? Спасибо за любую помощь!WPF: Adorner Hit Testing/MouseDown Event
Скриншот и VS 2008 Проект: http://cid-0432ee4cfe9c26a0.skydrive.live.com/browse.aspx/%C3%96ffentlich?uc=2
Кодекс для 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);
}
}
спасибо за ваш ответ, но как вы накладываете кисть на рекламодателя? рисовать текст и заполнять всю визуализацию? –
ok, получил его (просто используйте drawcontext для рисования прозрачного прямоугольника, ничего особенного), и он отлично работает! Большое спасибо! все еще задаваясь вопросом, действительно ли вам нужен дополнительный прямоугольник для этого. в любом случае, теперь это просто работает. –