Ich erstelle ein WPF-Benutzersteuerelement, das sozusagen eine SQL WHERE-Klausel "on the fly" generiert. Dieses Steuerelement wiederum hostet eine beliebige Anzahl eines anderen Benutzersteuerelements, das die einzelnen Bedingungen in dieser WHERE-Klausel erstellt. Die Instanzen dieses untergeordneten Steuerelements enthalten mehrere Kombinationsfelder, ein Textfeld (um den Zielwert der Bedingung einzugeben) und einige Schaltflächen - eines zum Hinzufügen von Werten zu einer Liste (z. B. für eine IN-Bedingung). und eine, um die Aussage - und die Kontrolle, die sie darstellt - vollständig zu löschen.geroutete Ereignisse in multi-instanziierten Benutzersteuerelementen wpf
Hier ist das Problem: Wenn ich eine Instanz dieses Anweisungserstellungssteuerelements erstellen, registriert die Steuerelementklasse ein Routingereignis, das ausgelöst wird, wenn der Benutzer auf die Schaltfläche "Löschen" klickt; Dieses Ereignis wird vom Benutzersteuerelement 'parent' verarbeitet, indem das Steuerelement aus dem Stackpanel mit der Liste der 'WHERE'-Bedingungen entfernt wird. Und es funktioniert. Einmal. Wenn ich versuche, eine weitere Instanz dieses Steuerelements hinzuzufügen, wird eine Ausnahme ausgelöst: "RoutedEvent-Name 'DeleteRule' für OwnerType 'SQLBuilder.ClauseControl' wird bereits verwendet."
Ich verbrachte den besseren Teil eines Tages Googeln und besuchen jede StackOverflow-Referenz, die ich fand, aber nichts befasst sich speziell mit dem Problem der Registrierung von Routingereignissen durch mehrere Instanzen eines bestimmten Benutzersteuerelements.
Was fehlt mir hier?
EDIT: Hier ist der Code, wo ich die Veranstaltung bin Registrierung:
public partial class ClauseControl : UserControl
{
// Register the routed event
public readonly RoutedEvent DeleteRule = EventManager.RegisterRoutedEvent("DeleteRule", RoutingStrategy.Bubble,
typeof(RoutedEventHandler), typeof(ClauseControl));
public event RoutedEventHandler DeleteRuleEvent
{
add { AddHandler(DeleteRule, value); }
remove { RemoveHandler(DeleteRule, value); }
}
... (Rest der Klassendefinition)
Bitte geben Sie einen relevanten Code ein (mindestens Code, bei dem 'die Steuerklasse ein Routingereignis registriert ') – ASh