gpt4 book ai didi

c# - WPF:装饰器 HitTest /MouseDown 事件

转载 作者:太空狗 更新时间:2023-10-29 21:47:44 24 4
gpt4 key购买 nike

我有一个装饰边框的装饰器(请参见下面的屏幕截图)。但是,只有在单击装饰器中的元素时才会引发装饰器的 MouseDown 事件。单击装饰元素上方装饰器中的任何位置时,我需要引发 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);
}
}

最佳答案

当我过去这样做时,我总是使用透明容器。有一个 null Brush 是不够的;您实际上需要使用颜色 #00000000(或其他一些 alpha 0 颜色)。您可以为容器内的元素关闭 IsHitTestVisible,以便容器接收所有鼠标按下事件。

关于c# - WPF:装饰器 HitTest /MouseDown 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com