Cố gắng để có được sự kiện OnMouse xuất hiện trong một đứa trẻ FrameworkElement
. Phần tử gốc là Panel
(và thuộc tính Background
không phải là Null).WPF FrameworkElement không nhận đầu vào Chuột
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 không bao giờ được gọi là, sự kiện luôn được xử lý và Snoop nói với tôi rằng sự kiện được định tuyến duy nhất dường như để có được như xa như các yếu tố 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>
Tài liệu nói rằng FrameworkElement
xử lý Nhập liệu, nhưng tại sao không có trong trường hợp này?
Cảm ơn phản hồi của bạn. Tôi đã được chơi xung quanh một chút và quản lý để có được những hành vi tôi cần bằng cách thêm những điều sau đây vào FrameWorkElement: bảo vệ ghi đè void OnRender (DrawingContext drawingContext) { Kích thước renderSize = this.RenderSize; Chỉnh sửa rect = new Rect (renderSize); Bút bút = bút mới (Brushes.Transparent, 0,0); drawingContext.DrawRectangle (Brushes.Transparent, pen, rect); } Có lẽ FrameworkElement có kích thước bằng không trừ khi có gì đó được thêm vào nó? – lava