2009-02-26 53 views
40

Tôi đã xem WPF, nhưng tôi chưa bao giờ thực sự làm việc trong đó (ngoại trừ 15 phút, nhắc nhở câu hỏi này). Tôi đã xem xét điều này post nhưng thực sự của nó về "Flash" của WPF. Vậy sự khác nhau giữa ứng dụng Windows Forms và ứng dụng WPF là gì?WPF là gì và so sánh với WinForms như thế nào?

+5

Tôi thấy điều này hữu ích cho tôi [clear-code.blogspot.com/2012/04/what-is-wpf.html] (http://clear-code.blogspot.com/2012/04/what-is-wpf.html) –

Trả lời

54

WPF là lớp đồ họa dựa trên giao diện đồ họa véc tơ mà WinForms không có. Tại sao điều đó quan trọng/thú vị? Bằng cách dựa trên vectơ, nó cho phép lớp trình bày chia tỷ lệ thành phần giao diện người dùng thành mọi kích thước mà không bị méo.

WPF cũng là một hệ thống thuyết trình tổng hợp, có nghĩa là phần lớn giao diện người dùng có thể được tạo thành từ bất kỳ phần tử giao diện người dùng nào khác. Điều này cho phép bạn dễ dàng xây dựng các phần tử giao diện người dùng phức tạp từ các phần tử đơn giản hơn.

WPF cũng hoàn toàn nhận biết dữ liệu, nghĩa là bạn có thể ràng buộc bất kỳ thuộc tính nào của phần tử giao diện người dùng với đối tượng .NET (hoặc thuộc tính/phương thức của đối tượng), thuộc tính của phần tử giao diện người dùng hoặc dữ liệu khác. Có, WinForms hỗ trợ databinding nhưng theo một cách hạn chế hơn nhiều.

Cuối cùng, WPF là "có thể làm được" hoặc "có thể sử dụng được", có nghĩa là nhà phát triển bạn có thể sử dụng hộp danh sách vì đó là hành vi bạn cần nhưng ai đó có thể "da" nó trông giống như một thứ hoàn toàn khác.

Hãy nghĩ đến một hộp danh sách hình ảnh. Bạn muốn nội dung thực sự là hình ảnh nhưng bạn vẫn muốn hành vi hộp danh sách. Điều này hoàn toàn không quan trọng để làm trong WPF bằng cách đơn giản bằng cách sử dụng hộp danh sách và thay đổi bản trình bày nội dung để chứa một hình ảnh thay vì văn bản.

+0

Tôi khá chắc chắn rằng trong WinForm bạn có thể liên kết khá nhiều bất kỳ tài sản với bất cứ điều gì. Đó là lý do tại sao DataBindings.Add() lấy chuỗi, đối tượng, chuỗi. Vì vậy, nó có thể sử dụng sự phản chiếu để liên kết các thuộc tính với nhau. – Quibblesome

+0

Silverlight sử dụng một tập hợp con các khả năng XAML của WPF, vì vậy biết cách lập trình các ứng dụng dựa trên WPF làm cho các ứng dụng Silverlight dễ bị chết tiệt như thế nào. –

+0

Vì vậy, người dùng có thể cho biết sự khác biệt giữa WPF và WinForm không? – Kredns

9

Để trả lời câu hỏi của bạn, ứng dụng WPF ứng dụng Windows. WPF là khung công tác mới của Microsoft (thực ra, nó là một hệ thống con của .NET framework 3.0) để viết các ứng dụng Windows phong phú. Nó có nghĩa là một sự thay thế cuối cùng cho WinForms (mặc dù thừa nhận rằng tỷ lệ chấp nhận chậm hơn nhiều so với MS hy vọng).

17

Cách tốt để xem xét điều này có thể bắt đầu bằng cách hỏi chính xác Winform là gì.

Cả Winforms và WPF là các khuôn khổ được thiết kế để làm cho lớp giao diện người dùng của một ứng dụng dễ dàng hơn để mã hóa. Những người già thực sự ở đây có thể nói về cách viết phiên bản Windows của "Hello, World" có thể mất 4 trang hoặc hơn. Ngoài ra, đá đã được một thỏa thuận tốt hơn sau đó và chúng tôi đã phải chiến đấu của thằn lằn khổng lồ trong khi chúng tôi mã hóa. Thư viện và nhà thiết kế Winforms có rất nhiều tác vụ phổ biến và làm cho chúng dễ viết hơn.

WPF cũng làm như vậy, nhưng với nhận thức rằng những tác vụ phổ biến giờ đây có thể bao gồm nhiều điều thú vị hơn, ngoài việc bao gồm rất nhiều thứ mà Winforms không nhất thiết coi là một phần của lớp giao diện người dùng. Cách WPF hỗ trợ lệnh, trình kích hoạt và databinding là tất cả các phần tuyệt vời của khung công tác, nhưng lý do cốt lõi cho nó là cùng một lý do cốt lõi mà Winforms đã có cho vị trí đầu tiên.

Cải tiến WPF ở đây là thay vì cho bạn tùy chọn viết điều khiển hoàn toàn từ đầu hoặc buộc bạn sử dụng một bộ điều khiển với khả năng tùy chỉnh giới hạn, giờ đây bạn có thể tách chức năng điều khiển khỏi sự xuất hiện của nó. Khả năng mô tả cách các điều khiển của chúng ta trông như thế nào trong XAML và giữ riêng biệt với cách các điều khiển hoạt động trong mã rất giống với mô hình HTML/Code mà các lập trình viên web sử dụng để làm việc.

Ứng dụng WPF tốt tuân theo cùng một mô hình mà ứng dụng Winforms tốt sẽ làm; giữ càng nhiều thứ càng tốt ra khỏi lớp giao diện người dùng.Logic cốt lõi của ứng dụng và lớp dữ liệu phải giống nhau, nhưng hiện tại có nhiều cách dễ dàng hơn để làm cho hình ảnh ấn tượng hơn, đó là lý do tại sao hầu hết thông tin bạn đã thấy trên đó liên quan đến các công cụ trực quan flashier. Nếu bạn đang tìm kiếm để tìm hiểu WPF, bạn thực sự có thể bắt đầu bằng cách sử dụng nó gần như chính xác như bạn sẽ Winforms và sau đó refactoring các tính năng khác trong khi bạn nắm bắt chúng. Để có một ví dụ tuyệt vời về điều này, tôi khuyên bạn nên viết loạt bài đăng trên blog của Scott Hanselman về sự phát triển của BabySmash, which start here. Đó là một hướng dẫn tuyệt vời của quá trình, cả về mã và suy nghĩ.

+1

Tôi thấy rằng cố gắng để làm những việc theo cách WinForms khi tôi đã bắt đầu trong WPF gây ra cho tôi nhiều vấn đề. Nó có thể tốt hơn để cố gắng để bắt đầu với một slate sạch càng tốt khi bắt đầu làm việc với WPF, IMO. – Andy

+0

@Andy Tôi phải nói rằng đó là cách tiếp cận của Scott thực sự buộc tôi phải hiểu rõ hơn về WPF. Tôi nghĩ rằng đó chính xác là những vấn đề đó, những hacks mà tôi phải sử dụng để làm cho mã của tôi hoạt động tốt, và sau đó là giải pháp 'đúng' cuối cùng thực sự khiến tôi học hỏi. – Raumornie

3

Bắt đầu ở đây, có hàng chục và hàng chục video: http://www.windowsclient.net/learn

Trong trường hợp này, schpiel tiếp thị là khá tốt:

** "Windows Forms là một tập hợp các lớp trong .NET Framework mà cho phép phát triển nhanh chóng các ứng dụng khách Windows phong phú, với các thư viện mạnh mẽ, mở rộng cho các điều khiển giao diện người dùng và đồ họa. Bạn có thể kết hợp WPF trong các ứng dụng Windows Forms của bạn thông qua tính tương thích của WPF-Windows Forms trong .NET 3.5 Framework. "*

* "WPF, một thành phần của Microsoft .NET Framewor k 3.5, trao quyền cho bạn để xây dựng thế hệ tiếp theo của trải nghiệm người dùng Windows. WPF hỗ trợ giao diện người dùng, phương tiện, tài liệu, tăng tốc phần cứng, đồ họa vector, khả năng mở rộng cho các yếu tố hình thức khác nhau, hiển thị dữ liệu tương tác và khả năng đọc nội dung vượt trội. "**

Với WPF, bạn sẽ nhận được hỗ trợ đồ họa tốt hơn, cách mạnh mẽ hơn và linh hoạt hơn databinding (nếu bạn đang làm việc với dữ liệu, sử dụng WPF.)

3

WPF viết tắt của W indows P resentation F oundation. trong khi công nghệ WinForms phụ thuộc vào GDI/GDI +, WPF được xây dựng trực tiếp trên đầu trang của Điều đó có nghĩa là bạn có thể làm nhiều hơn bạn có thể với WinForms, trong khi vẫn đang sử dụng thư viện .NET Framework Class. terfaces, trò chơi 2D/3D, bản trình bày và hơn thế nữa. WPF giống như một bộ phim Flash (swf), không có phần tử "Phim". WPF dựa trên .NET và có thể được sử dụng để xây dựng các ứng dụng web hỗ trợ khách hàng phong phú.

1
  1. WPF cơ bản là một API mới để tạo giao diện người dùng đồ họa cho nền tảng Windows.
  2. WPF không chỉ là hệ thống trình bày thế hệ tiếp theo để xây dựng ứng dụng Windows Client cùng với giao diện người dùng trực quan tuyệt đẹp.
  3. WPF được xây dựng trên đầu DirectX (Direct3D), thay vì dựa vào hệ thống con GDI/GDI + cũ hơn.
  4. WPF là lớp đồ họa dựa trên giao diện đồ họa véc tơ và dựa trên vector cho phép lớp trình bày chia tỷ lệ thành phần giao diện người dùng thành mọi kích thước mà không bị méo.
  5. WPF là “có thể làm được” và “có thể có chủ đề”. Nó có nghĩa là WPF cho phép thay đổi giao diện của bất kỳ điều khiển giao diện người dùng nào.
0

Từ góc độ triển khai, một trong những khác biệt chính là WPF sử dụng kiến ​​trúc MV-VM được thực thi nghiêm ngặt, với chế độ xem được xác định bằng ngôn ngữ đánh dấu tùy chỉnh, XAML, chế độ xem là một với các thuộc tính có thể truy cập và mô hình có hiệu quả là lớp truy cập dữ liệu. WinForms, bằng cách so sánh, không có sự tách biệt rõ ràng như vậy - mặc dù theo quy ước, các khía cạnh khác nhau có thể được nhóm lại trong các tệp C# khác nhau, tất cả các mã của nó vẫn còn. Trong thực tế điều này làm cho WPF phát triển giống như phát triển web DOM, với khung công tác WPF chạy trong nền và trung gian.

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