2008-12-13 30 views
10

Tôi đã tạo một UserControl bao gồm một vài hình elip và nhãn. Tôi đã thêm nó vào một hình thức khác và mọi thứ trông khá rùng rợn.WPF Làm thế nào để có được một UserControl để kế thừa một Button?

Sau đó, tôi đã bắt đầu thêm một số trình xử lý sự kiện và phát hiện ra rằng điều khiển mà tôi đã thực hiện không hiển thị sự kiện Nhấp chuột. Rất tiếc. Dễ sửa chữa, đúng không? Chỉ cần quay trở lại code-behind trên UserControl mà tôi đã tạo và để nó kế thừa Button.

Thật không may, làm điều này gây ra một "Tuyên bố một phần của MyControl không được chỉ định các lớp cơ sở khác nhau" tin nhắn. Điều này đến như là một bất ngờ vì tôi đã không tuyên bố bất kỳ lớp cơ sở khác. Tìm kiếm một phần trong câu hỏi cũng không trả về kết quả nào.

Có cách nào để đánh bại vấn đề này không? Nếu không, cách giải quyết dễ nhất ở đây là gì? Mục tiêu của tôi chỉ đơn giản là để có được một sự kiện Click trên UserControl.

Trả lời

11

Vâng, bạn đã tuyên bố các lớp cơ sở khác :) Chỉ cần tin tưởng biên dịch :)

Khi bạn viết <UserControl ...></UserControl> trong XAML, bạn đang subclassing UserControl. Nếu bạn muốn phân lớp Nút, hãy sử dụng <Button ...></Button> thay thế và ": Nút" trong tệp mã sau.

Nhưng tôi thực sự khuyên bạn không nên chọn nút con, đó là nhiệm vụ quá mức cần thiết cho bạn. Bạn có thể sử dụng sự kiện MouseLeftButtonUp thay vì sự kiện Nhấp chuột.

+2

Sự kiện MouseLeftButtonUp dựa trên nút luôn được nhấp bằng chuột. Khi người dùng nhấn phím Spacebar, sự kiện Click được kích hoạt nhưng MouseLeftButtonUp không phải là (phím cách không phải là nút chuột trái). –

Các vấn đề liên quan