カスタムUserControl
を作成しました。内部にグリッドが付いたボタンです。C#のUserControl内でイベントバブリング
それを含むページ、MainPage.xaml
から、私は、ユーザーコントロールにClick
イベントをバインドする必要があり、かつEventHandler
のための機能が(ないユーザーコントロール内の)メインページで、外部に記述する必要があります。
したがって、私はthis questionを読んで、イベントとイベントをトリガーするEventHandler関数を作成しました。これらはUserControlの内部にあります。 これは、あなたが見ることができるように、私はAを配置した
UserControl.xaml.cs
public class MyButton : UserControl
{
public event RoutedEventHandler ButtonClicked;
private void ButtonClickedHandler()
{
//Null check makes sure the main page is attached to the event
if (this.ButtonClicked != null)
this.ButtonClicked(this, new RoutedEventArgs());
Debug.WriteLine("ButtonClickedHandler");
}
}
MainPage.xaml.cs
private void MyButton_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("MyButton_Click");
}
private void MyButton_Loaded(object sender, RoutedEventArgs e)
{
(sender as MyButton).ButtonClicked += MyButton_Click;
}
クラスでありますDebug.WriteLine
のカップルですが、それらは誘発されず、私は何が間違っているのか分かりません。
あなたが呼ぶのですか'ButtonClickedHandler()'? – zockDoc
Yip、@ zockDocは 'ButtonClickedHandler()'を呼び出すのを忘れてしまったようです。 –
ええ、しかし、ポイントは[リンク内]でした(http://stackoverflow.com/questions/6192739/how-do-i-raise-an-event-in-a-usercontrol-and-catch-it- in-mainpage)を非公開にしますか? とにかく、 'Debug.WriteLine(" MyButton_Click ");'はトリガされません。 –