2009-09-24 59 views
12

Tôi hiện đang học WPF. Tôi thực sự thích nó cho đến nay. Tôi thích cách tạo các ứng dụng tuyệt vời dễ dàng như thế nào và muốn tạo một ứng dụng có đường viền cửa sổ tùy chỉnh. Tôi muốn cho nó trông giống như thế này:Tạo biểu mẫu tùy chỉnh trong WPF?

Tôi biết tôi có thể chỉ dễ dàng thay đổi kiểu cửa sổ để không có một học sinh nội trú và đi từ đó, nhưng điều đó dường như giống như WinForms. Nó sẽ không được tốt hơn để chỉ cần tạo ra một lớp học có nguồn gốc từ Window và theo kiểu nó? Nếu vậy làm thế nào tôi có thể làm điều này? Cảm ơn!

Trả lời

15

Dưới đây là một bài viết tuyệt vời về tùy biến cửa sổ "chrome" với WPF:

Custom Window Chrome in WPF

Nó được đi kèm với một dự án luật Gallery từ đó bạn có thể tải về các mã:

WPF Chrome

3

Để hiển thị đường viền không chuẩn, bạn phải đặt AllowTransparency = True và không có Border từ cửa sổ. Cho dù bạn muốn làm điều này trong lớp học là tùy thuộc vào bạn. Về cơ bản bạn phải nhận ra WPF thực sự chỉ là một ứng dụng DirectX được lưu trữ trong một cửa sổ tiêu chuẩn. Vì vậy, nếu bạn muốn hành vi không chuẩn của Windows, bạn phải thả đường viền cửa sổ chuẩn và bắt đầu nối lại nó dựa trên các sự kiện cửa sổ chuẩn mà bạn muốn xử lý. Kéo, thu nhỏ/tối đa/phục hồi, thanh Tiêu đề.

Thực sự, bạn không nên mất quá 30 phút đến một giờ để tìm ra thứ gì đó gần với thứ bạn muốn và bạn có thể đặt cửa sổ tùy chỉnh của mình trong lớp cơ sở để sử dụng lại trên đường .

Tôi có một cảm giác, đối với hầu hết các trường hợp, đây sẽ là tùy chọn tốt hơn và nhanh hơn so với cố gắng ghi đè lên bản vẽ Windows mặc định.

+0

Hãy cẩn thận với khả năng truy cập, v.v. nếu bạn phát minh lại thanh tiêu đề cửa sổ tiêu chuẩn. Mọi công cụ trợ năng sẽ biết cách đóng cửa sổ, v.v. Tuy nhiên, bạn có thể không quan tâm đến đơn đăng ký của mình. –

0

Có một sản phẩm được gọi là "Hỗn hợp" có chứa một điều khiển ChromelessWindow trong gói "Essentials Mix" của bạn mà làm cho điều này rất dễ dàng để làm. Tôi đã không bao giờ thực sự sử dụng nó bản thân mình, tôi chỉ biết nó tồn tại và nghĩ rằng nó có thể được sử dụng. Ở mức tối thiểu nó cho thấy rằng bạn có thể làm những gì bạn hỏi về việc tạo ra chrome có thể tái sử dụng, templatable.

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