Intentando que los eventos de OnMouse aparezcan en un niño FrameworkElement
. El elemento primario es Panel
(y la propiedad Background
no es nula).WPF FrameworkElement no recibe entrada de mouse
class MyFrameworkElement : FrameworkElement
{
protected override void OnMouseDown(MouseButtonEventArgs e)
{
// Trying to get here!
base.OnMouseDown(e);
}
}
public class MyPanel : Panel
{
protected override void OnMouseDown(MouseButtonEventArgs e)
{
// This is OK
base.OnMouseDown(e);
}
}
OnMouse nunca se llama, el evento es siempre controlada y Snoop me dice que el evento enrutado solamente nunca parece llegar tan lejos como el elemento Panel
.
<Window
x:Class="WpfApplication5.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:WpfApplication5"
Title="Window1" Height="300" Width="300">
<Border x:Name="myBorder" Background="Red">
<l:MyPanel x:Name="myPanel" Background="Transparent">
<l:MyFrameworkElement x:Name="myFE"/>
</l:MyPanel>
</Border>
</Window>
Docs decir que FrameworkElement
maneja la entrada, pero por qué no en este escenario?
Gracias por su respuesta. He estado jugando un poco y logré obtener el comportamiento que necesito agregando lo siguiente a FrameWorkElement: protected override void OnRender (DrawingContext drawingContext) { Tamaño renderSize = this.RenderSize; Rect rect = new Rect (renderSize); Bolígrafo = bolígrafo nuevo (Cepillos.Transparente, 0.0); drawingContext.DrawRectangle (Brushes.Transparent, pen, rect); } ¿Quizás FrameworkElement tiene un tamaño cero a menos que se le agregue algo? – lava