我有一個裝飾邊框的Adorner(請看下面的截圖)。然而,只有在裝飾者中點擊元素時纔會引發Adorner的MouseDown事件。當點擊裝飾元素上方的裝飾物中的任何位置時,我需要引發MouseDown事件。如何才能做到這一點?我是否必須在裝飾者中添加透明控件,或者有其他方法嗎?謝謝你的幫助!WPF:Adorner命中測試/ MouseDown事件
截圖和VS 2008項目:http://cid-0432ee4cfe9c26a0.skydrive.live.com/browse.aspx/%C3%96ffentlich?uc=2
守則裝飾器:
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);
}
}
感謝您的回覆,但您如何在裝飾者上設置畫筆? drawingcontext並填充整個渲染? – 2010-03-29 02:33:23
好吧,明白了(只需使用drawingcontext繪製一個透明的矩形,沒什麼特別的),它工作正常!非常感謝你!仍然想知道你是否真的需要一個額外的矩形。無論如何,它現在只是工作。 – 2010-03-29 12:30:18