我对 WPF 很陌生,我正在尝试编写一个基本上是 TextBlock 的自定义控件,但也有一个单击事件。我尝试从各种来源将这些东西拼凑在一起,但它不起作用。
在下面的代码中,我希望OnMouseLeftButtonDown
在元素上执行鼠标单击时调用它。如果发生这种情况,我想提出这个Click
事件。在调试器中查看,该函数从未被调用。
我是否误解了这应该如何工作,或者是否有其他错误发现它进入了我的代码?
namespace EP3_gui.Controls
{
public class ClickableTextBlock : TextBlock
{
public ClickableTextBlock() : base()
{ }
public ClickableTextBlock( Inline inline )
: base( inline )
{ }
protected override void OnMouseLeftButtonDown( MouseButtonEventArgs e )
{
base.OnMouseLeftButtonDown( e );
RoutedEventArgs args = new RoutedEventArgs( ClickEvent );
RaiseEvent( args );
}
public static readonly RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent(
"Click",
RoutingStrategy.Bubble,
typeof( RoutedEventHandler ),
typeof( ClickableTextBlock )
);
public event RoutedEventHandler Click
{
add { AddHandler( ClickEvent, value ); }
remove { RemoveHandler( ClickEvent, value ); }
}
}
}