2008-12-13 8 views
10

Ich habe ein UserControl erstellt, das aus ein paar Ellipsen und Labels besteht. Ich fügte es gut zu einer anderen Form hinzu und die Dinge sahen ziemlich snazzy aus.WPF Wie erhalte ich ein UserControl, um eine Schaltfläche zu erben?

Dann begann ich, einige Ereignishandler hinzuzufügen und stellte fest, dass das Steuerelement, das ich machte, kein Clickereignis aussetzte. Hoppla. Einfach zu reparieren, oder? Geh einfach zurück zum Code-Behind auf dem UserControl, den ich gemacht habe und lass es Button erben.

Leider verursachte dies eine Meldung "Partielle Deklarationen von MyControl darf keine anderen Basisklassen angeben". Dies war überraschend, da ich keine anderen Basisklassen angegeben habe. Die Suche nach dem Partial in Frage ergab auch keine Ergebnisse.

Gibt es eine Möglichkeit, dieses Problem zu beheben? Wenn nicht, was wäre hier die einfachste Lösung? Mein Ziel ist einfach ein Click-Ereignis auf dem Benutzersteuerelement zu erhalten.

Antwort

11

Ja, Sie haben erklärt, andere Basisklassen :) Nur Vertrauen Compiler :)

Wenn Sie <UserControl ...></UserControl> in XAML Schreiben Sie Subklassen Usercontrol. Wenn Sie eine Schaltfläche ableiten möchten, verwenden Sie stattdessen <Button ...></Button> und ": Button" in der Code-Behind-Datei.

Aber ich bin stark ermutigen Sie, Button nicht zu Unterklasse, es ist ein Overkill für Sie Aufgabe. Sie können das MouseLeftButtonUp-Ereignis anstelle des Click-Ereignisses verwenden.

+2

Das MouseLeftButtonUp-Ereignis beruht darauf, dass die Schaltfläche immer von einer Maus angeklickt wird. Wenn ein Benutzer eine Leertaste drückt, wird das Click-Ereignis ausgelöst, aber MouseLeftButtonUp nicht (die Leertaste ist keine linke Maustaste). –

Verwandte Themen