Trong thực tế, các điều khiển tùy chỉnh là thứ bạn thực hiện ở cấp mã trong khi bạn có thể sử dụng XAML cho các điều khiển người dùng. Các điều khiển tùy chỉnh mở rộng một trong các lớp cơ sở điều khiển WPF và cung cấp chức năng bổ sung thông qua mã để tất cả logic và biểu diễn được thêm vào phải được triển khai bên trong mã.
Điều khiển người dùng về mặt kỹ thuật là một điều khiển nội dung thông thường mà bạn có thể mở rộng ở một số phần trong mã nhưng thông thường nó được mở rộng bằng cách đặt các điều khiển khác bên trong nó. Vì vậy, như Kent đã đề cập, UserControl là tổng hợp các điều khiển khác. Điều này giới hạn những gì bạn có thể làm với một điều khiển người dùng đáng kể. Nó dễ sử dụng hơn nhưng hạn chế hơn so với điều khiển tùy chỉnh đầy đủ.
Các điều khiển này có một sự khác biệt nhỏ từ quan điểm thời gian chạy. Khi xây dựng một ứng dụng và đặt UserControl vào nó, cây điều khiển sẽ có một mẫu UserControl cụ thể bên trong nó. Vì vậy, nếu chúng ta xem xét một ví dụ khập khiễng của một nút chuyên dụng. Nếu bạn đang sử dụng điều khiển người dùng, bạn sẽ thêm một nút bên trong <UserControl>
phần tử. Khi sử dụng điều khiển tùy chỉnh, bạn có thể lấy chính điều khiển từ một nút. Sự khác biệt sẽ được nhìn thấy trong cây logic.
Trong khi điều khiển tùy chỉnh sẽ cung cấp một cây logic tương tự như
UserControl sẽ cung cấp một cây logic
Vì vậy, cuối cùng, UserControl chỉ là một ContentControl bình thường mà bạn có thể mở rộng một chút và bạn có thể xác định trước nội dung. Kiểm soát tùy chỉnh cung cấp tính linh hoạt cao hơn với mức giá dễ thực hiện vì bạn phải thực hiện tất cả logic và tương tác trong mã thay vì có lợi ích của XAML.
Mặc dù sau tất cả những điều này, tôi không nghĩ có nhiều sự khác biệt trong các mẫu Visual Studio. Nhiều khả năng Visual Studio Custom Control chỉ tạo một dự án với điều khiển tùy chỉnh trống trong khi dự án User Control là một dự án có điều khiển người dùng trống. Sau này bạn có thể thêm bất kỳ loại mặt hàng nào vào dự án.
Cập nhật
Và ý kiến của tôi về việc khi nào nên sử dụng điều khiển tùy chỉnh và điều khiển người dùng là nếu bạn có thể hoàn thành công việc với điều khiển người dùng và phần tử điều khiển bổ sung trong cây logic không làm phiền bạn, hãy sử dụng điều khiển người dùng vì chúng dễ dàng hơn nhiều tạo và duy trì. Chỉ sử dụng điều khiển tùy chỉnh nếu bạn có lý do không sử dụng điều khiển người dùng.