私は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 ); }
}
}
}