WPF và MVVM – Phần 1: Giới thiệu
Theo mình thấy là tài liệu về WPF(Windows Presentation Foundation) và MVVM(Model-View-ViewModel) rất ít trong khi WPF là 1 công nghệ không đơn giản, những tài liệu có chất lượng thì đa phần là tiếng anh nên hôm nay mình quyết định dịch 1 chuỗi các bài hướng dẫn từng bước chuyển đổi từ Windows Form sang WPF, mục đích chính là để nêu ra những tính năng mới trong WPF, để từ đó giúp cho mọi người có thể dễ dàng chuyển từ WinForm sang WPF và từ WPF sang WPF sử dụng MVVM. Còn nếu bạn chưa học WinForm thì bạn có thể bỏ qua nó qua học thẳng WPF luôn. Rất hoan nghênh mọi ý kiến đóng góp của mọi người.
Bài dịch được lấy từ bản gốc trong chuỗi bài viết của Reed Copsey: [From Windows Forms to WPF with MVVM][1]
Phần 1: Giới thiệu
Tôi thường nói chuyện với những người thử quyết định lựa chọn giữa Windows Forms và Windows Presentation Foundation cho 1 dự án mới. Sau khi trải nghiệm WPF 1 khoảng thơi gian thì tôi thấy không có lý do gì để chọn Windows Forms cho phát triển dự án mới. WPF, khi sử dụng đúng cách, thì sẽ vượt qua Windows Forms về trải nghiệm người dùng và phát triển sản phẩm.
Tôi cảm thấy những rắc rối xoay quanh việc lựa chọn WPF thật sự bắt nguồn từ sự thiếu hiểu biết về WPF. Ngay cả những người trong nhóm của tôi đã bị choáng ngợp khi cố gắng tìm hiểu các phần khác nhau của WPF phù hợp với nhau, và làm thế nào để áp dụng các khái niệm mới trong WPF có hiệu quả. Để giải quyết điều này, tôi sẽ chia bài viết ra thành những phần đơn giản và đưa ra các thay đổi tư tưởng cần thiết khi chuyển từ một người phát triển Windows Forms tốt thành một người phát triển WPF hiệu quả.
WPF là 1 khái niệm rộng lớn, đừng nghi ngờ về điều đó. Nó rộng lớn cả về mặt phạm vi và phương pháp tiếp cận hoàn toàn khác đối với phát triển giao diện người dùng hơn những công nghệ khác. Tuy nhiên cũng đừng lo lắng quá, nó sẽ trở nên dễ hiểu và dễ sử dụng khi bạn đã hiểu các khái niệm cơ bản.
Ngoài phạm vi rộng lớn của WPF ra, các mẫu thiết kế(design pattern) mới cũng được phát triển để tận dụng các lợi thế đặc trưng được giới thiệu bởi nền tảng này. Một trong những mẫu thiết kế được tham khảo nhiều nhất hiện nay có lẽ là mô hình MVVM, hay mô hình Model-View-View-Model. Mẫu MVVM này được lấy cảm hứng từ một số tính năng của WPF và dường như hoàn toàn phù hợp với WPF, vì vậy rất nhiều người phát triển ủng hộ sử dụng mô hình này cho WPF.
Một lần nữa, đừng để những điều này làm bạn lo lắng hay cản trở bạn. MVVM không làm cho WPF trở nên khó khăn hơn mà chỉ làm cho WPF trở nên nhanh chóng và hiệu quả hơn. Việc học MVVM thực sự sẽ giúp bạn hiểu hơn về WPF.
WPF rộng lớn và nền tảng này cũng không bắt buộc bạn phải theo một cách duy nhất để làm việc. Có rất nhiều cách để làm việc với WPF, trong đó bao gồm cả việc bạn có thể thực hiện gần như chính xác những gì đã thực hiện với Windows Forms. Đây là một phần sức mạnh và sự linh hoạt của WPF, nhưng cũng là một cái bẫy cần biết để tránh gặp phải. MVVM vừa hướng dẫn và vừa buộc bạn phải tận dụng tất cả lợi thế từ các tính năng mới của WPF một cách hiệu quả, giúp bạn tránh được các bẫy và sai lầm thông thường.
Với chuỗi bài viết này, tôi sẽ bắt đầu bằng cách giới thiệu ứng dụng Windows Form đơn giản – một RSS Feed Reader, và minh họa cách chuyển đổi sang WPF. Tôi sẽ bắt đầu với sự chuyển đổi một cách rõ ràng và làm thế nào bạn có thể làm cho WPF làm việc chính xác giống như bạn có thể làm với Windows Forms. Sau đó tôi sẽ giải thích một cách chi tiết một trong những cách suy nghĩ mới phổ biến với WPF và cho thấy nó sẽ thay đổi cách suy nghĩ của bạn như thế nào về giao diện người dùng.
Để làm điều này, chúng ta sẽ làm việc với 4 dự án riêng biệt, trong đó bao gồm 3 phiên bản hoàn toàn khác nhau của cùng một ứng dụng. Mục đích ở đây không phải dùng WPF để tạo ứng dụng “đẹp” hay “hào nhoáng” mà đúng hơn là cho bạn thấy cách sử dụng WPF như thế nào để phát triển một ứng dụng thân thiện hơn, bao gồm cả việc làm cho nó sạch sẽ hơn, lôgic hơn, dễ bảo trì và dễ kiểm định hơn.
[1]: http://reedcopsey.com/series/windows-forms-to-mvvm/
Mình rất thích bài viết và tin rằng nó rất hữu ích vì một thời vật lộn với WPF MVVM rồi
Mình thì đang tìm hiểu nó để mốt còn áp dụng vào windows phone
Bác ơi cho em hóng kinh nghiệm làm việc với WPF được không ạ, e đang bập bõm với cái này mà kiếm thấy ít tài liệu qá
Mời mọi người xem khóa học phần mềm quản lý kho dùng WPF và MVVM