2008-12-13 17 views
10

Utworzono UserControl składający się z kilku elips i etykiet. Dodałem go do innej formy, a rzeczy wyglądały na całkiem nieźle.WPF Jak uzyskać UserControl do dziedziczenia przycisku?

Następnie zacząłem dodawać niektóre procedury obsługi zdarzeń i odkryłem, że formant, który zrobiłem, nie ujawnił zdarzenia Click. Ups. Łatwe do naprawienia, prawda? Po prostu wróć do kodu z tyłu w UserControl, który zrobiłem i pozwól mu dziedziczyć Button.

Niestety, spowodowało to, że komunikat "Częściowe deklaracje MyControl nie może określać różnych klas bazowych". Było to zaskoczeniem, ponieważ nie zadeklarowałem żadnych innych klas bazowych. Szukanie częściowej, której dotyczy pytanie, również nie zwróciło żadnych wyników.

Czy istnieje sposób na pokonanie tego problemu? Jeśli nie, jakie byłoby najłatwiejsze rozwiązanie? Moim celem jest uzyskanie zdarzenia Click w UserControl.

Odpowiedz

11

Tak, masz zadeklarowane innych klas bazowych :) Zaufaj kompilator :)

Kiedy piszesz <UserControl ...></UserControl> w XAML, jesteś instacji UserControl. Jeśli chcesz podklasować przycisk, użyj zamiast niego <Button ...></Button> i ": Button" w pliku z kodem.

Ale gorąco zachęcam do tego, aby nie używać podklasy Button, to przesada dla ciebie. Możesz użyć zdarzenia MouseLeftButtonUp zamiast zdarzenia Click.

+2

Zdarzenie MouseLeftButtonUp opiera się na tym, że przycisk jest zawsze klikany myszą. Gdy użytkownik naciśnie klawisz spacji, zdarzenie Click zostanie uruchomione, ale funkcja MouseLeftButtonUp nie jest (spacja nie jest lewym przyciskiem myszy). –

Powiązane problemy