Tại sao chúng ta thực sự cần kiểm soát người dùng?Mục đích của UserControl là gì?
Window:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpfApplication1="clr-namespace:WpfApplication1">
<wpfApplication1:SaveCloseUserControl />
</Window>
kiểm soát tài khoản:
<UserControl x:Class="WpfApplication1.SaveCloseUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Orientation="Horizontal">
<Button Height="30" Content="Save" />
<Button Height="30"
Margin="1"
Content="Cancel" />
</StackPanel>
</UserControl>
Mã đằng sau:
public partial class SaveCloseUserControl : UserControl
{
public SaveCloseUserControl()
{
InitializeComponent();
}
}
Tôi không thấy bất kỳ lý do tại sao tôi nên quấn một StackPanel (hoặc bất kỳ khác kiểm soát) bên trong của một UserControl, nếu mã sau mà không có UserControl sẽ làm chính xác như nhau.
Window: bảng
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpfApplication1="clr-namespace:WpfApplication1">
<wpfApplication1:SaveCloseStackPanel />
</Window>
stack mà không cần người dùng kiểm soát:
<StackPanel x:Class="WpfApplication1.SaveCloseUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Orientation="Horizontal">
<Button Height="30" Content="Save" />
<Button Height="30"
Margin="1"
Content="Cancel" />
</StackPanel>
Mã đằng sau:
public partial class SaveCloseUserControl : StackPanel
{
public SaveCloseUserControl()
{
InitializeComponent();
}
}
Tôi đã sử dụng usercontrol ở khắp mọi nơi, nhưng bây giờ khi tôi suy nghĩ về nó, họ không làm gì ngoài việc gói một món đồ trong đó. Vì vậy, tôi đã thử nó trên 10 quan điểm khác nhau, và không quan trọng nó là gì, tôi đã có thể thay thế UserControl với các mặt hàng khác (Grid, ComboBox, GroupBox vv), và tất cả các công trình chính xác theo cùng một cách. Vì vậy, để được rõ ràng, nếu tôi đã có một điều khiển người dùng và điều đầu tiên trong nó là ComboBox, sau đó tôi loại bỏ UserControl và đặt ComboBox ở vị trí của nó. Tất cả mọi thứ bên trong sau đó vẫn như cũ, giống như ví dụ trên với StackPanel.
Tại sao tôi thậm chí còn bận tâm với UserControl và có một mục khác được tạo và hiển thị nếu nó không làm gì?
Bạn sẽ sử dụng lại thành phần đó ở nhiều nơi như thế nào trong khi cung cấp các bộ phận riêng của mình như quy tắc xác thực dữ liệu và chức năng thuyết bất khả tri của chế độ xem khác? Ah haaa ....: D –
@ChrisW. Chính xác theo cách tương tự như với usercontrol, bởi vì tất cả những gì tôi đã làm là, tôi đã thay thế thẻ UserControl bằng StackPanel trong trường hợp này (thẻ bắt đầu và đóng của một tệp xaml). Xác nhận, ràng buộc v.v., mọi thứ hoạt động như nó. – adminSoftDK
Ah ok Tôi không nhận thấy bạn đã tạo lớp học của riêng bạn. Sau đó, tôi thấy quan điểm của bạn. Tôi đoán lập luận sẽ dựa nhiều hơn vào các vấn đề bảo trì mã sau đó vì tôi biết nếu tôi phải bước vào một dự án lớn và tìm thấy những thứ kết hợp với nhau theo cách không chuẩn, tôi sẽ khóc một chút ở bên trong lol. Ngoại trừ khi một người nào đó có thể cung cấp một câu trả lời được xác định về mặt kỹ thuật, tôi có thể thấy điều này trở thành một cuộc thảo luận tán gẫu về loại câu hỏi ý kiến. –