2013-09-22 42 views
7

Thực ra, tôi đã bắt đầu học WPF. Tôi có vài tháng kinh nghiệm trong việc phát triển các ứng dụng Windows Forms. Mặc dù, tôi đang nhận được ý nghĩa của một ứng dụng WPF, nhưng tôi vẫn không thể phân biệt sự khác biệt giữa hai, trên cơ sở sản lượng của họ.Sự khác biệt trong hiển thị các ứng dụng WPF và Windows Forms

Với tham chiếu đến điều này Link: Device Independent Pixel (DPI), tôi đã học được rằng bất cứ khi nào hệ điều hành hiển thị ứng dụng WPF, nó tự quản lý kích thước của nó theo độ phân giải của nó.

Vì vậy, để kiểm tra sự khác biệt này, tôi đã tạo hai ứng dụng demo trong cả hai khung công tác và thay đổi độ phân giải .. nhưng tôi không tìm thấy bất kỳ sự khác biệt thỏa đáng nào. Mà có thể giải thích nó là một ứng dụng WPF và đây là một ứng dụng Windows Forms.

Nó không tạo ra bất kỳ thanh cuộn nào tối đa hóa và không làm cho nút lớn hay nhỏ khi thay đổi độ phân giải.

Tôi đã đọc ở đâu đó rằng Visual   Studio   2010 đã được viết lại trong WPF. Nhưng trong thử nghiệm của tôi, tôi thấy rằng, (trên thay đổi độ phân giải của máy tính để bàn) nó làm cho văn bản và đồ họa không đọc được/mờ. Khi định cỡ lại cửa sổ, mọi thứ đã bị ẩn trừ thanh menu. Và nội dung trên thanh menu đã chuyển vị trí của nó, ví dụ: ở bên phải một mục menu đang dịch chuyển xuống. Tại sao?

Vui lòng làm cho tôi chính xác & giải thích thêm chút nữa (vấn đề hiển thị này).

+0

Tôi không biết bạn đang nói về điều gì. WPF là độ phân giải độc lập. winforms thì không. WPF không phải là "mờ", nếu bạn có một ứng dụng WPF trông mờ chỉ [thay đổi chế độ hiển thị phông chữ] (http://stackoverflow.com/a/18091149/643085). –

+1

sự khác biệt giữa WPF và winforms là WPF không hút và không hoàn toàn vô dụng như được giải thích [ở đây] (http://stackoverflow.com/a/18931755/643085). Và không, nếu bạn tạo một ứng dụng WPF bằng cách sử dụng trình thiết kế Visual Studio, nó sẽ không có độ phân giải độc lập như được giải thích [ở đây] (http://stackoverflow.com/a/18927377/643085). Bạn cần gõ XAML theo cách thủ công và sử dụng các thùng chứa thích hợp tùy theo nhu cầu của bạn. –

+0

@HighCore: Cảm ơn bạn rất nhiều vì đã trả lời! Bạn muốn nói, một trong những khó khăn nên mã chiều cao và chiều rộng cho ứng dụng của chúng tôi theo 800 * 600, hoặc bất cứ điều gì như khôn ngoan bằng văn bản một truy vấn phương tiện truyền thông trong css!?!? – user2804762

Trả lời

14

Để trả lời câu hỏi này đúng cách, tôi có thể phải viết toàn bộ chương ở đây, nhưng tôi giữ nó ngắn gọn. Từ những gì tôi đã học được cho đến nay có ba khác biệt chính giữa một ứng dụng WPF và một ứng dụng Windows Forms.

  1. Bố cục: WPF cung cấp cho chúng tôi sự linh hoạt hơn trong việc sắp xếp các yếu tố hình ảnh của chúng tôi. Nó có một cơ chế thông minh đằng sau hiện trường tự động và tự động tìm vị trí cho mỗi phần tử mà không cần cập nhật bố cục bằng tay. Ví dụ:
    • Là loại người dùng trong một TextBox, chiều rộng của nó có thể làm tăng và đẩy các yếu tố khác đi hoặc nó có thể đẩy một số yếu tố vào một hàng mới (như thanh menu bạn đã quan sát)
    • Khi kích thước của một thay đổi kiểm soát nó ảnh hưởng đến không gian có sẵn cho các yếu tố khác để kích thước và vị trí của chúng có thể thay đổi cho phù hợp.
    • Khi cửa sổ đang được kích thước lại hoặc độ phân giải được thay đổi, nó ngay lập tức cập nhật bố cục và thay đổi kích thước của các phần tử để lấp đầy hoặc vừa với không gian. (Đừng nghĩ rằng kích thước của một nút được tăng gấp đôi khi bạn giảm một nửa độ phân giải. Nó không làm việc theo cách đó. Về cơ bản, nó đo mọi yếu tố đầu tiên và sau đó nó sắp xếp chúng)

Here you'll find out more about Layouts.

  1. Hiển thị: Thử một khung 30x30 TextBox trong ứng dụng Windows Forms và ứng dụng WPF. Không có vấn đề làm thế nào lộn xộn bạn viết WPF, nó vẫn còn nhanh hơn nhiều so với Windows Forms, và nó sẽ không nhấp nháy trong một giây nếu bạn viết nó đúng cách. Hãy tưởng tượng một số ít các hoạt ảnh, hiệu ứng, kích hoạt và phân cấp các kiểu trên chúng, vẫn nhanh hơn nhiều so với Windows Forms.

    • Ngoài ra, nó có thể sử dụng loại double cho Sizings và do đó bạn có thể thấy các cạnh mờ đôi khi có thể tránh được (SnapToDevicePixels). Lưu ý: Để tránh giảm tốc độ và nhấp nháy trong ứng dụng Windows Forms, bạn nên đặt DoubleBuffer của biểu mẫu thành "true".
  2. cuối cùng và quan trọng nhất:Tập trung vào trình bày: này có vẻ hơi lạ, nhưng khi bạn chọn WPF bạn phải dừng lại suy nghĩ trong Windows Forms (nhiều sự kiện và điều khiển với tên và rất nhiều của của mã phía sau) và bắt đầu suy nghĩ trong WPF (Ràng buộc, Lệnh, Tài nguyên, Kiểu, Mẫu, Trình biến đổi, DependencyProperties và các cuộc gọi lại của chúng).

    • Sức mạnh thực sự của WPF nằm tách biệt 'Xem' và 'Logic', khi bạn bị treo, không có giới hạn nào về cách bạn có thể trình bày 'Chế độ xem'.
    • Quan trọng hơn, các MVVM pattern làm cho các ứng dụng trực quan phức tạp nhất khá đơn giản và dễ phát triển.

Nếu bạn dự định chuyển sang WPF, bạn đã đưa ra quyết định đúng. Luôn bám sát kế hoạch! tức là tránh mã phía sau (mã hóa trong các tệp .xaml.cs), Tên XAML (trừ khi chỉ được sử dụng trong XAML) và sự kiện giao diện người dùng càng nhiều càng tốt. Hãy sử dụng các khả năng của WPF để thay thế.

5

Windows Forms (WinForms) và Windows Presentation Foundation (WPF) là hai cách khác nhau để xây dựng giao diện người dùng cho các ứng dụng của bạn. Windows Forms là công nghệ cũ hơn và các điều khiển của nó được tìm thấy trong số System.Windows.Forms namespace. WPF là một công nghệ mới hơn và các điều khiển của nó được tìm thấy trong không gian tên System.Windows.Controls.

WPF

Ưu điểm:

  • phong cách mạnh mẽ và lột da cấu trúc
  • Dễ dàng tạo cái nhìn của riêng bạn và cảm thấy
  • Có hỗ trợ Windows Forms
  • Công nghệ tương lai cho phát triển Windows   Ứng dụng Vista
  • .210
  • Khả năng tái sử dụng mã hiện
  • dữ liệu cao tiên tiến ràng buộc có thể

Nhược điểm:

  • Declarative vs mã thủ tục
  • Yêu cầu .NET Framework 3.0
  • So với Windows Forms, vẫn còn trong giai đoạn phát triển
  • Yêu cầu DX9 card đồ họa tương thích với đồ họa tiên tiến

Windows Forms

Ưu điểm:

  • tài liệu mở rộng được được tìm thấy trên Internet
  • Rất nhiều ví dụ
  • Có hỗ trợ WPF

Nhược điểm:

  • này sẽ được hỗ trợ trong bao lâu? (Tôi đã đọc ở đâu đó rằng Microsoft chỉ phát triển WPF bây giờ, chỉ bảo trì cho Windows Forms).
  • Thiết kế giao diện của riêng bạn trong một ứng dụng là rất nhiều công việc.
Các vấn đề liên quan