2010-02-11 32 views
6

Tôi mới sử dụng WPF để phát triển ứng dụng Windows, chỉ muốn đưa nó lên đó trước tiên. Tôi đang sử dụng Visual Studio 2010 và .NET Framework 4.0.Công việc CRUD đơn giản với WPF và ràng buộc dữ liệu

Tôi đang làm việc trên một công cụ quản trị khá đơn giản. Để đơn giản, hãy nói rằng tôi đang làm việc với dữ liệu Nhân viên. Tôi đã tạo một UserControl nhỏ gọi là UserDetail có tất cả các trường liên quan đến lớp Employee.

Cách đơn giản nhất để ràng buộc các điều khiển đầu vào trên UserDetail của tôi là gì? Điều này có thể có một màn hình trống khi tạo một cá thể mới hoặc các giá trị hiện có nếu chỉnh sửa một cá thể hiện có.

Tôi đã thử các sau đây trong các nhà xây dựng:

DataContext = _employee; 

Và tôi bị ràng buộc một điều khiển như thế này trong XAML:

<TextBox Name="txtFirstName" Text="{Binding FirstName}"/> 

này hoạt động, nhưng nó không có vẻ như cách chính xác để làm điều đó. Điều này có vẻ giống như một ví dụ đơn giản, nhưng tôi đã không tìm thấy bất cứ điều gì hữu ích được nêu ra.

Bất kỳ đề xuất hoặc liên kết nào đến hướng dẫn về loại ràng buộc đơn giản này?

+0

Có thể bạn sẽ thấy rằng một khi bạn đã hiểu được sự kỳ diệu của MVVM, bạn không cần UserControl cho dữ liệu nhân viên của bạn, chỉ là một mẫu. –

Trả lời

4

Giống như Joel nói rằng bạn đang đi đúng hướng. Tại một số điểm bạn cần phải thiết lập rõ ràng DataContext trong đoạn mã phía sau. Điều này thường sẽ được thực hiện ở cấp cao nhất - như trong lớp Window của bạn - và tất cả các DataContext tiếp theo sẽ được thiết lập thông qua DataBindings.

Ví dụ cụ thể của bạn, bạn nói rằng bạn đang làm việc trên UserControl. Bạn sẽ có thể liên kết DataContext của UserDetails trực tiếp nơi điều khiển đang được sử dụng, và do đó bạn không cần phải đặt DataContext trong mã phía sau cho UserControl. Ít nhất thông thường người dùng UserControl của bạn là người sẽ báo cho UserControl biết dữ liệu nào sẽ sử dụng.

Giả sử bạn có một lớp AllEmployees với thuộc tính SelectedEmployee. Bạn đặt một thể hiện của đối tượng này dưới dạng DataContext trên Window của bạn - trong đoạn mã phía sau. Bây giờ bạn muốn cửa sổ của bạn hiển thị chi tiết người dùng cho SelectedEmployee. Việc kiểm soát UserDetails được xây dựng giả sử nó có một đối tượng người lao động bị ràng buộc vào DataContext của nó, và bây giờ bạn chắc chắn rằng nó có một bằng cách thiết lập này trong DataBinding:

<Window xmlns:local="YourNamespaceHoldingTheUserDetailsControl> 
    .. 
    <local:UserDetails DataContext={Binding SelectedEmployee} /> 
    .. 
</Window> 

Bạn cũng có thể thêm một tài sản của nhân viên đến lớp UserDetails của bạn mà sẽ thiết lập DataContext - nếu bạn nghĩ rằng điều này có vẻ tốt hơn trong ràng buộc.

Để cải thiện sự tách biệt giữa GUI và mô hình miền của bạn, bạn chắc chắn nên tìm hiểu về the MVVM pattern. Ban đầu tôi học được từ việc xem this video bởi Jason Dollinger một vài lần. Video sẽ dạy cho bạn rất nhiều điều hữu ích về WPF. This question cũng dường như có một số liên kết có giá trị về chủ đề này.

Chúc may mắn học tập WPF! Nó khác một chút so với các khung công tác GUI khác, vì vậy đường cong học tập có thể hơi dốc. Nhưng một khi bạn nhận được vào nó đó là một nơi tuyệt vời để được!

2

Bạn đang thực sự đi đúng hướng.

Tôi khuyên bạn nên đọc this article on M-V-VM.

+0

Bài viết tuyệt vời, cảm ơn bạn! – 80bower

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