急なWPFの山を登り続け、苦しんでいます。
UserControl を定義しました。MainWindow は、UserControl 内のコントロールからの MouseButtonEventArgs を取得する必要があります (たとえば、マウスの e.GetPosition など)。
UserControl コード ビハインドでは、登録を行い、バブリング イベントを発生させます。
public static readonly RoutedEvent MyButtonDownEvent = EventManager.RegisterRoutedEvent("MyMouseButtonDown", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyUserControl));
public event RoutedEventHandler MyButtonDown {
add { AddHandler(MyButtonDownEvent, value); }
remove { RemoveHandler(MyButtonDownEvent, value); }
}
private void MyMouseButtonDownHandler(object sender, MouseButtonEventArgs e) {
RaiseEvent(new RoutedEventArgs(MyButtonDownEvent ));
}
MainWindow で、次のように UserControl を宣言します。
<local:MyUserControl MouseDown="MyUserControl_MouseDown"/>
そして、このコードビハインド
private void MyUserControl_MouseDown(object sender, RoutedEventArgs e)
UserControl からイベントを受け取りますが、Args は RoutedEventArgs (これは正常です) ですが、マウス e.GetPosition を取得する必要がある MouseButtonEventArgs にアクセスできません。
この場合、どのようなエレガントなソリューションを提案しますか?