Bạn đã có một số câu trả lời tuyệt vời mà giải thích sự khác biệt nhưng cũng hiểu rằng điều khiển tùy chỉnh và UserControls
có mục đích khác nhau:
Một UserControl
thường encapusulates một số loại hành vi composite. Ví dụ: nếu bạn có ứng dụng cần chỉnh sửa chi tiết liên hệ ở nhiều nơi, bạn có thể tạo điều khiển tùy chỉnh có nhãn và trường văn bản cho tất cả dữ liệu được trình bày bằng nút gửi có mã có liên quan và sử dụng lại điều khiển này trong suốt ứng dụng của bạn.
Điều khiển tùy chỉnh là điều khiển bắt nguồn từ một trong các lớp kiểm soát WPF
(E.G. Control
, ContentControl
v.v.) và phải được tạo bằng mã. Những kiểm soát này thường có một mục đích cố kết duy nhất (nghĩ TextBox
, ComboBox
, Label
) thay vì hành động chung với nhau (mặc dù điều này không phải là trường hợp).
UserControl
thường dễ dàng hơn cho những người không quen thuộc với WPF
vì chúng có thể được thiết kế trực quan.
Đề xuất của tôi sẽ bắt đầu bằng một số UserControl
. Bạn luôn có thể cấu trúc lại điều này thành một điều khiển tùy chỉnh vào một ngày sau đó khi bạn trở nên quen thuộc hơn với cách hoạt động của WPF
. Tạo điều khiển của bạn dưới dạng điều khiển tùy chỉnh sẽ yêu cầu kiến thức về ControlTemplate
s và Style
vì bạn sẽ cần phải cung cấp quyền kiểm soát của mình để xác định giao diện cho kiểm soát của bạn.
Khi tất cả được nói và thực hiện, miễn là điều khiển hoạt động chính xác, không quan trọng bạn sử dụng phương pháp nào.
Xem this đăng ví dụ về hai cách tiếp cận cho cùng một vấn đề. Tác giả bài đăng muốn có quyền kiểm soát có thể trình bày nội dung phương thức ở phía trước nội dung chính. Tác giả bài đăng thực sự đã trả lời câu hỏi của riêng mình bằng cách triển khai nó dưới dạng UserControl
. Tôi đã thêm một câu trả lời cho bài viết tạo điều khiển dưới dạng điều khiển tùy chỉnh nhưng cả hai đều có cùng tác dụng cuối.
Nguồn
2012-06-28 17:40:58
Theo như tôi biết, điều khiển tùy chỉnh chỉ là các điều khiển người dùng được biên dịch (hoặc kiểm soát cơ bản) –
@DavidBrunelle chắc chắn là không. Việc xử lý khác nhau của Mẫu nên đã làm rõ điều đó. Ngoài ra một UserControl không thể có một phong cách, đó là tầm quan trọng sống còn đối với hầu như tất cả các điều khiển tùy chỉnh. – dowhilefor