我想点击装饰层下的按钮。当然,在视觉树中,装饰器是与控件不同的分支。 无法处理 PreviewMouseDown
如何在装饰层下触发事件?
xaml 如下。
<Canvas Name="_canvas" Width="100" Height="100">
<Button Name="_btn" Width="120" Height="120"/>
</Canvas>
代码隐藏如下。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Loaded += delegate { AdornerLayer.GetAdornerLayer(_canvas).Add(new GrayAdorner(_canvas)); };
_btn.Click += (sender, e) => MessageBox.Show("Mouse Click is working.");
}
}
public class GrayAdorner : Adorner
{
public GrayAdorner(UIElement element)
: base(element) { }
protected override void OnRender(DrawingContext drawingContext)
{
drawingContext.DrawRectangle(Brushes.Gray, null, new Rect(new Point(0, 0), DesiredSize));
base.OnRender(drawingContext);
}
}