Попытка получить события OnMouse, появляющиеся у ребенка FrameworkElement
. Родительский элемент - это Panel
(а свойство Background
не является нулевым).WPF FrameworkElement, не принимающий ввод мыши
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 никогда не вызывается, событие всегда необработанное и Snoop говорит мне, что маршрутизация событие только когда-либо, кажется, чтобы получить насколько 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 говорят, что FrameworkElement
обрабатывает ввод, но почему не в этом случае?
Спасибо за ваш ответ. Я немного поиграл и смог получить нужное поведение, добавив следующее в FrameWorkElement: protected override void OnRender (DrawingContext drawingContext) { Размер renderSize = this.RenderSize; Rect rect = new Rect (renderSize); Pen pen = new Pen (Brushes.Transparent, 0.0); drawingContext.DrawRectangle (Brushes.Transparent, pen, rect); } Возможно, элемент FrameworkElement равен нулю, если только что-то не добавлено к нему? – lava