2

Adorner Layer の下の Button をクリックしたい。もちろん、ビジュアル ツリーでは、Adorner はコントロールとは別のブランチです。 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);
    }
}
4

2 に答える 2

4

Adorner をヒット テスト可能にする必要がない場合は、GrayAdorner の IsHitTestVisible プロパティを false に設定します。マウス イベントは Adorner を無視し、その下の Button に渡されます。

于 2014-07-01T03:57:41.060 に答える