2008-11-27 26 views
10

Câu hỏi này dự định cung cấp một danh sách các giải pháp cho những cạm bẫy thông thường, "của gotcha", hoặc các vấn đề thiết kế khi phát triển các ứng dụng WPF. Điều này cũng có thể bao gồm các mẫu thiết kế phù hợp miễn là có giải thích là tại sao nó hoạt động tốt nhất. Phản hồi phải được bỏ phiếu lên hoặc xuống dựa trên mức độ phổ biến của loại sự cố. Dưới đây là các quy tắc:Lỗi phổ biến nhất được thực hiện trong phát triển WPF là gì?

  • Một câu trả lời cho mỗi bài đăng. Điều này rõ ràng sẽ cung cấp cho các vấn đề phổ biến nhất xếp hạng cao nhất.
  • Tốt nhất nên cung cấp liên kết đến bài đăng hoặc giải pháp có liên quan đã tồn tại ở đâu đó trong SO đất.
+0

Đây có thể là nguồn tài nguyên vô giá cho nhiều nhà phát triển khi ngày càng có nhiều cửa hàng bắt đầu xem WPF. –

Trả lời

14

Vấn đề: Vấn đề chính mà tôi đã thấy từ trước đến nay là mọi người bắt đầu viết mã trong WPF với mô hình giao diện người dùng winform.

Giải pháp: WPF là không WinForms/MFC/Win32 Vì vậy, Quên tất cả những giả định phía UI và quy chuẩn bạn đã sử dụng và biết được trong khi phát triển dựa trên Windows UI cho 20 năm ngoái.

Điều rất quan trọng là phải hiểu những ý tưởng cốt lõi đằng sau nền tảng này, liên kết này- Major UI Development Breakthroughs in the new WPF platform sẽ cung cấp một cái nhìn sâu sắc về WPF. Trong đó liệt kê ra các điểm sau đây. Những điểm nổi bật là các tính năng yêu thích của tôi trên nền tảng này.

  1. nâng cao Graphics
  2. Vẽ Object Model
  3. Giàu Ứng dụng chữ
  4. thích ứng UI Giao diện
  5. Flexible Content Mẫu
  6. Lookless Controls
  7. Styles Phù hợp dữ liệu theo hướng UI
  8. Triggers
  9. Declarative Programming
+0

Bạn thực sự nên cụ thể hơn. Tôi đang bỏ phiếu cho đến khi bạn cung cấp một giải thích chi tiết hơn về ý của bạn. Bạn nên cung cấp tài liệu tham khảo cho một số công cụ M-V-VM. – Micah

+0

Anh ấy hoàn toàn đúng, và đó là điều mà bạn phải vượt qua để hiểu WPF –

+0

Micrô thứ hai, Tôi nên loại bỏ những giả định nào? – Jimmy

1

Bắt dữ liệu ràng buộc để làm việc đúng cách giữa các thuộc tính quy định tại ContentControls (Windows, UserControls, vv ..) và tài sản trên các yếu tố tạo nên nội dung điều khiển. Ví dụ. Hãy nói rằng tôi có một cửa sổ trông như thế này:

<Window x:Name="MyWindow"....> 
    <TextBlock Text="{Binding Path=PropertyDefinedInMyWindow}" /> 
</Window> 

Vấn đề: Không có vấn đề bao lâu thì bạn cập nhật "PropertyDefinedInMyWindow" nó không bao giờ được phản ánh trong các TextBlock. SO Question

Giải pháp: Bạn cần đặt DataContext của cửa sổ hoặc cho biết phần tử gắn kết thuộc tính nào tồn tại.SO Solution

2

Vấn đề/Câu hỏi:SO Question

Làm thế nào để lộ một DependencyProperty của một thành phần trong điều khiển người dùng của tôi cho người dùng? Có rất nhiều ví dụ về cách phơi bày thuộc tính bình thường bằng cách tạo thuộc tính mới thuộc tính và ràng buộc, nhưng không có cách nào để hiển thị thuộc tính chỉ đọc như FrameworkElement.ActualWidthProperty.

Giải pháp: Bạn cần để lộ một chỉ đọc DependencyProperty mới trong điều khiển người dùng của bạn, và cập nhật nó bất cứ khi nào chứa "thành phần" của bạn 's ActualWidthProperty được cập nhật. Điều này đòi hỏi phải sử dụng DependecyPropertyDescriptor để nhận thông báo về những thay đổi xảy ra. SO Solution

3

Sự cố: Sử dụng mẫu thiết kế M-V-VM, nơi tôi làm nhanh chế độ xem? Điều này có xảy ra trong ViewModel không? SO Question 1, SO Question 2

Giải pháp: phát triển WPF là hiệu quả nhất khi sử dụng mô hình M-V-VM như trái ngược với mô hình phổ biến khác như M-V-C. Xu hướng này là để xử lý ViewModel giống như bạn làm bộ điều khiển có thể xử lý việc mở và tạo các khung nhìn cũng như các mô hình. Đây không phải là trường hợp trong M-V-VM. Lượt xem là nơi duy nhất mà các lượt xem sẽ được tạo. Chế độ xem sẽ không biết gì về chế độ xem. SO Answer 1, SO Answer 2

+0

Điều này tạo ra một câu hỏi tiếp theo: làm thế nào để bạn tạo ra các khung nhìn? Tôi sử dụng RelayCommands để ràng buộc các hành động từ khung nhìn đến ViewModel, do đó, khung nhìn thậm chí không biết một hành động đã bị sa thải, không biết anh ta nên mở một khung nhìn mới. Giải pháp: tạo sự kiện trong VM cho Chế độ xem để đăng ký? – Sam

+0

@Sam - Tôi sẽ viết một bài báo về điều này. Bạn có thể cho tôi một số ví dụ trong đó các lệnh phải nằm trong VM so với Chế độ xem không? – Micah

3

Không nhận ra sự hiển thị phông chữ kém khi bắt đầu dự án và được khách hàng nói rằng họ không thể nhìn vào nó vì mọi thứ mờ ảo trông như thế nào.

+3

không biết tại sao mọi người bỏ phiếu này. Đây là một vấn đề chính đối với rất nhiều người. Có vẻ như chỉ sau khi Microsoft đã cố gắng sử dụng WPF cho VS 2010, họ có nhận ra tầm quan trọng của vấn đề đó không. –

0

Sử dụng mã - đằng sau trong chế độ xem, làm cho bé bị FSM khóc.

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