Ich habe eine benutzerdefinierte UserControl
erstellt, es ist ein Knopf mit einem Gitter drin.Ereignis sprudelt in UserControl in C#
Von der Seite, die es enthält, MainPage.xaml
, ich brauche ein Click
Ereignis an das Benutzersteuerelement zu binden, und die Funktion für die EventHandler
muss außerhalb geschrieben werden, in der Mainpage (nicht im Usercontrol).
Also, durch this question lesen, habe ich eine Event und eine EventHandler-Funktion erstellt, die das Ereignis auslöst. Diese befinden sich im UserControl. Dies sind die Klassen
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;
}
Wie Sie sehen können, habe ich platziert ein Paar von Debug.WriteLine
, aber sie werden nicht ausgelöst, und ich weiß nicht, was ich falsch mache.
Haben Sie jemals rufen 'ButtonClickedHandler()'? – zockDoc
Yip, @ zockDoc ist nach dem Aussehen der Dinge, die Sie vergessen haben, die 'ButtonClickedHandler()' aufzurufen. –
Ja, aber was war der Punkt [in der Verbindung] (http://stackoverflow.com/questions/6192739/how-do-i-raise-an-event-in-a-usercontrol-and-catch-it- in-mainpage) um es dann privat zu machen? Anyway, 'Debug.WriteLine (" MyButton_Click ");' wird nicht ausgelöst. –